DropDownList en C #, obtenir trop-plein d'articles DropDownList après chaque fois à l'aide sélectionner un élément

StackOverflow https://stackoverflow.com/questions/1759086

  •  20-09-2019
  •  | 
  •  

Question

Eh bien, le problème est que je suis en train de se DDL: 1. recive catagories d'un DB Tabel - travail 2. onChange sélectionner à partir d'une autre table produits par l'élément dans la DDL - travail avait un problème avec No1 mais fixe ce problème. j'ai découvert que pour obtenir No1 travail que je dois utiliser postback. a fait cela et tout dans cette partie fonctionne bien et actualy tout fonctionne ... mais mon problème hug (et je ne peux pas trouver une bonne réponse pour elle) est que chaque fois que je change l'élément ia obtenir tous les temps partout nouveau (i ai initialement 8 article - temps secont 16-24 etc ....) essayé d'utiliser: ddlCatagories.Items.Clear (); quand je l'utilise que je ne reçois pas de doublons mais, je ne reçois pas quelque chose, il faut la première catagory de la liste à chaque fois, peu importe ce que j'ai choisi dans la liste .. en essayant de le comprendre pour la semaine passée ... s'il vous plaît aider: -)

    public partial class selectNamesFromCatagories : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ddlCatagories.Items.Clear();
        SqlDataReader dr = DbHelper.ExecuteReader(
            sqlConn1.home,
            "spSelectNamesFromCatagories");
        while (dr.Read())
        {
            ListItem li = new ListItem(dr["CategoryName"].ToString());
            ddlCatagories.Items.Add(li);
        }
        dr.Close();
    }
    protected void ddlCatagories_SelectedIndexChanged(object sender, EventArgs e)
    {
        SqlDataReader dr = DbHelper.ExecuteReader(
                            sqlConn1.home,
                            "spProductsByCatagoryID",
                            new SqlParameter("@catName", ddlCatagories.Text)
                            );
        while (dr.Read())
        {
            TableRow tr = new TableRow();
            for (int i = 0; i < dr.FieldCount; i++)
            {
                TableCell td = new TableCell();
                td.Text = dr[i].ToString();
                tr.Controls.Add(td);
            }
            tblProductsByCatagories.Controls.Add(tr);
        }
    }
}
Était-ce utile?

La solution

remplir uniquement la DropDownList sur la première charge en vérifiant si la page n'a pas réaffecté ie.

if (!Page.IsPostBack)
{
    // Populate list
}

Autres conseils

Je suis d'accord avec Dan et ajoute ce qui suit aussi bien si vous avez des contrôles ajax permis, car ils peuvent générer callbacks.

if (!Page.IsPostBack && !Page.IsCallBack)
{
    // Populate list
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top