DropDownList en C #, conseguir artículos DropDownList desbordamiento después de cada vez que utiliza la selección de un elemento

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

  •  20-09-2019
  •  | 
  •  

Pregunta

bien el problema es que yo estoy tratando de llegar a DDL: 1.-Categorías de recive Se puede reservar DB - que trabajan 2. onchange seleccionar de una tabla diferente de los productos por el artículo en el DDL - trabajando tenido un problema con el número 1, pero fija ese problema. me enteré de que para conseguir No1 de trabajo tengo que usar la devolución de datos. hice y cada cosa en esa parte está funcionando bien y podía comprender cada cosa está funcionando ... pero mi problema abrazo (y no puedo encontrar ninguna buena respuesta para ella) es que cada vez que cambio el elemento ia conseguir todas las veces en todo de nuevo (tengo initialy 8 artículo - 16 de tiempo secont - 24 de etc ....) intentado utilizar: ddlCatagories.Items.Clear (); cuando uso que no estoy recibiendo ningún duplicado, pero luego, no estoy recibiendo cualquier cosa, toma la primera CATEGORIA de la lista cada vez, no importa lo que elegimos en la lista .. tratando de averiguarlo durante la semana pasada ... por favor ayuda: -)

    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);
        }
    }
}
¿Fue útil?

Solución

Sólo poblar el DropDownList en la primera carga comprobando si la página no se ha publicado la espalda es decir.

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

Otros consejos

Estoy de acuerdo con Dan y añadiría lo siguiente, así si tiene alguna ajax habilitado controles, ya que pueden generar devoluciones de llamada.

if (!Page.IsPostBack && !Page.IsCallBack)
{
    // Populate list
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top