none
Dropdownlist duplican valores RRS feed

  • Pregunta

  • Buenas noches.

    Tengo tres DropdownList dentro de un formview y actualizan una tabla en BD MYSQL, pero al seleccionar en alguno de los dropdownlist se duplican los valores de los otros dos.

    codigo c#

     protected void EmployeeFormView_DataBound(object sender, EventArgs e)
        {
            try
            {

     DropDownList d1 = (DropDownList)EmployeeFormView.Row.FindControl("DDLFun");
                DropDownList d2 = (DropDownList)EmployeeFormView.Row.FindControl("DDLoc");
                DropDownList d3 = (DropDownList)EmployeeFormView.Row.FindControl("DDLPro");

                //d1.Items.Clear();
                d1.Items.Add(new System.Web.UI.WebControls.ListItem("Seleccione", ""));
                d1.AppendDataBoundItems = true;

                //d2.Items.Clear();
                d2.Items.Add(new System.Web.UI.WebControls.ListItem("Seleccione", ""));
                d2.AppendDataBoundItems = true;

                //d3.Items.Clear();
                d3.Items.Add(new System.Web.UI.WebControls.ListItem("Seleccione", ""));
                d3.AppendDataBoundItems = true;
                
               
                string myConnectionString;
                myConnectionString = "Data Source=localhost; Database="";User ID=root; Password=''";
                using (MySqlConnection cn = new MySqlConnection(myConnectionString))
                {
                    cn.Open();
                    string funcion = d1.SelectedIndex.ToString();
                    string local = d2.SelectedIndex.ToString();
                    string pro = d3.SelectedIndex.ToString();

                    MySqlDataAdapter cmdfn = new MySqlDataAdapter("SELECT DISTINCT Descripcion,Codigo FROM elecciones.funcion", myConnectionString);
                    MySqlDataAdapter cmdlc = new MySqlDataAdapter("SELECT DISTINCT nombre_loc,cod_localidad FROM elecciones.localidades", myConnectionString);
                    MySqlDataAdapter cmdpr = new MySqlDataAdapter("SELECT DISTINCT descripcion,codigo FROM elecciones.profesion", myConnectionString);

                    DataSet ds1 = new DataSet();
                    cmdfn.Fill(ds1);
                    d1.DataSource = ds1;
                    d1.DataTextField = "descripcion";
                    d1.DataValueField = "codigo";
                    d1.DataBind();

                    DataSet ds = new DataSet();
                    cmdlc.Fill(ds);
                    d2.DataSource = ds;
                    d2.DataTextField = "nombre_loc";
                    d2.DataValueField = "cod_localidad";
                    d2.DataBind();

                    DataSet ds2 = new DataSet();
                    cmdpr.Fill(ds2);
                    d3.DataSource = ds2;
                    d3.DataTextField = "Descripcion";
                    d3.DataValueField = "Codigo";
                    d3.DataBind();
                }
            }
            catch (Exception ex)
            {
                //Response.Write("Ocurrio un error: " + ex.Message);
            }

    aspx:

    <asp:DropDownList ID="DDLPro" RunAt="Server" AutoPostBack="True"
                                          CssClass="textEntry" ontextchanged="EmployeeFormView_DataBound" Width="250px">
                                      </asp:DropDownList>

    jueves, 23 de julio de 2015 2:41

Respuestas

  • Hola, buenas.

    Es posible que al indicarle a los DDL que hagan append de los elementos de los datasource vinculados, no estén vaciando el contenido cada vez que vinculas un origen de datos.

    Para cambiar este comportamiento modifica tu código con:

    d1.AppendDataBoundItems = false; 
    d2.AppendDataBoundItems = false;
    d3.AppendDataBoundItems = false;

    Un saludo.


    When an answer is helpful, please vote as helpful, propose as answer and/or mark as answer

    jueves, 23 de julio de 2015 6:57

Todas las respuestas

  • Hola, buenas.

    Es posible que al indicarle a los DDL que hagan append de los elementos de los datasource vinculados, no estén vaciando el contenido cada vez que vinculas un origen de datos.

    Para cambiar este comportamiento modifica tu código con:

    d1.AppendDataBoundItems = false; 
    d2.AppendDataBoundItems = false;
    d3.AppendDataBoundItems = false;

    Un saludo.


    When an answer is helpful, please vote as helpful, propose as answer and/or mark as answer

    jueves, 23 de julio de 2015 6:57
  • usa esto cada vez que llenes los dropdownlist:

    if(!page.IsPostback)

    {

    llenar_dropdownlist();

    }

    void llenar_dropdownlist()

    {

    ddl1.Items.Clear();

    //tu codigo para llenarlo.

    }


    Si mi respuesta fue útil ayudame marcándola como correcta.

    jueves, 23 de julio de 2015 16:56
  • Gracias por rersponder, aunque la verdad cuando coloco el if(!page.IsPostback) entonces luego no sale nada en mis dropdownlist
    viernes, 31 de julio de 2015 2:29