none
Entity framework DropDownList RRS feed

  • Pregunta

  • Hola tengo 2 DropDownList al primero lo cargo desde una tabla departamentos

    var query = from d in context.Departamentos
                            select d.NombreD;

                var dept = query.ToList();
                DropDownList1.DataSource = dept;
                DropDownList1.DataBind();

    y un segundo DropDownList  que tendria que cargar de acuerdo a la seleccion del primero la segunda tabla es de localidades estan relacionadas y tiene un codigo de departamento desde ya gracias

    viernes, 20 de febrero de 2015 0:29

Respuestas

  • hola

    en el DropDownList1 que defines en las propiedades DataTextField y DataValueField ? porque es importante definirlas

    var dept = context.Departamentos.ToList();
    
    DropDownList1.DataSource = dept;
    DropDownList1.DataTextField = "NombreD";
    DropDownList1.DataValueField = "id";
    DropDownList1.DataBind();

    por supuesto define el nombre de la propiedasd que representa el id de los departamentos

    entonces el el SelectedIndexChanged podrias tomar el SelectedValue del combo y usarlo en el where de la linq que carga las localidades

    Nota: recuerda definir el AutopostBack = true  de DropDownList1  para que se ejecute el evento

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    viernes, 20 de febrero de 2015 0:59

Todas las respuestas

  • hola

    en el DropDownList1 que defines en las propiedades DataTextField y DataValueField ? porque es importante definirlas

    var dept = context.Departamentos.ToList();
    
    DropDownList1.DataSource = dept;
    DropDownList1.DataTextField = "NombreD";
    DropDownList1.DataValueField = "id";
    DropDownList1.DataBind();

    por supuesto define el nombre de la propiedasd que representa el id de los departamentos

    entonces el el SelectedIndexChanged podrias tomar el SelectedValue del combo y usarlo en el where de la linq que carga las localidades

    Nota: recuerda definir el AutopostBack = true  de DropDownList1  para que se ejecute el evento

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    viernes, 20 de febrero de 2015 0:59
  • Gracias Leandro quedo perfecto una consulta mas ¿ como lo haria con 5 dropdowlist en cascada tendria que definerle a todos la propiedades DataTextField y DataValueField ?
    viernes, 20 de febrero de 2015 14:09
  • Aqui de nuevo con los siguiente el primer dropdownlist anda bien y carga  el segundo carga tambien bien pero cuando el combo tiene mas de un valor selecciono el segundo valor y carga el tercer dropdown list ahora si selecciono el primer valor no hace nada selecciono el segundo y vuelvo a seleccionar el primero y ahi si funciona esto esta bien cuando el combo tiene varios valores ahora en algunos casos el combo solo tiene un valor y es aqui donde tengo problemas
    viernes, 20 de febrero de 2015 14:49
  • Aqui de nuevo con los siguiente el primer dropdownlist anda bien y carga  el segundo carga tambien bien pero cuando el combo tiene mas de un valor selecciono el segundo valor y carga el tercer dropdown list ahora si selecciono el primer valor no hace nada selecciono el segundo y vuelvo a seleccionar el primero y ahi si funciona esto esta bien cuando el combo tiene varios valores ahora en algunos casos el combo solo tiene un valor y es aqui donde tengo problemas
    Me explico mejor porque segun lo que probe el primer valor del combo es el index 0 el evento selectindexchange comprueba que este cambie pero como es un solo indice no lo hace, tampoco lo hace si por ejemplo en un combo de varios indices se elije justo el primero que seria cero bueno este seria mi problema alguna sujerencia me vendria bien desde ya gracias
    viernes, 20 de febrero de 2015 16:44
  • tienes que invocar tu la secuencia

    [ASP.NET] DropDownList anidados

    analiza como en un evento invoco los metodos LoadComboXX() para forzar la cascada

    en tu caso es con linq, pero la tecnica es la misma

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 20 de febrero de 2015 16:55
  • Hola Leandro lei tu publicacion y lo adapte a mi codigo pero en el segundo dropdownlist se posiciona siempre en el primer item te dejo el codigo completo a ver si me puedes ayudar

    public partial class FrmPrueba : System.Web.UI.Page
        {

             TutorialEntities context = new TutorialEntities();

    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    LoadComboDepartamentos();
                }
            }

    private void LoadComboDepartamentos()
            {
                var dept = context.Departamentos.ToList();
                DropDownList1.DataSource = dept;
                DropDownList1.DataTextField = "NombreD";
                DropDownList1.DataValueField = "Cod_Departamento";
                DropDownList1.DataBind();

                if (DropDownList1.Items.Count !=0)
                {
                    int depaId = Convert.ToInt32(DropDownList1.SelectedValue);
                    LoadComboLocalidades(depaId);
                }
                else
                {
                    DropDownList2.Items.Clear();
                    DropDownList3.Items.Clear();
                }
            }

            private void LoadComboLocalidades(int depaId)
            {
                var query = from l in context.Localidades
                            where l.Departamento == depaId
                            select l;
                DropDownList2.DataTextField = "NombreL";
                DropDownList2.DataValueField = "Cod_Localidad";
                DropDownList2.DataSource = query.ToList();
                DropDownList2.DataBind();

                if (DropDownList2.Items.Count !=0)
                {
                    int locaId = Convert.ToInt32(DropDownList2.SelectedValue);
                    LoadComboCircuitos(locaId);
                }
                else
                {
                    DropDownList3.Items.Clear();
                }
            }

            private void LoadComboCircuitos(int locaId)
            {
                var query = from c in context.Circuitos
                            where c.Localidad == locaId
                            select c;
                DropDownList3.DataTextField = "NombreC";
                DropDownList3.DataValueField = "Cod_Circuito";
                DropDownList3.DataSource = query.ToList();
                DropDownList3.DataBind();
            }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
            {
                
               int depaId = Convert.ToInt32(DropDownList1.SelectedValue);
                LoadComboLocalidades(depaId);
            }

            protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
            {
                
              int locaId = Convert.ToInt32(DropDownList2.SelectedValue);
                LoadComboCircuitos(locaId);
            }

    sábado, 21 de febrero de 2015 13:47
  • Hola Leandro lei tu publicacion y lo adapte a mi codigo pero en el segundo dropdownlist se posiciona siempre en el primer item te dejo el codigo completo a ver si me puedes ayudar

    public partial class FrmPrueba : System.Web.UI.Page
        {

             TutorialEntities context = new TutorialEntities();

    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    LoadComboDepartamentos();
                }
            }

    private void LoadComboDepartamentos()
            {
                var dept = context.Departamentos.ToList();
                DropDownList1.DataSource = dept;
                DropDownList1.DataTextField = "NombreD";
                DropDownList1.DataValueField = "Cod_Departamento";
                DropDownList1.DataBind();

                if (DropDownList1.Items.Count !=0)
                {
                    int depaId = Convert.ToInt32(DropDownList1.SelectedValue);
                    LoadComboLocalidades(depaId);
                }
                else
                {
                    DropDownList2.Items.Clear();
                    DropDownList3.Items.Clear();
                }
            }

            private void LoadComboLocalidades(int depaId)
            {
                var query = from l in context.Localidades
                            where l.Departamento == depaId
                            select l;
                DropDownList2.DataTextField = "NombreL";
                DropDownList2.DataValueField = "Cod_Localidad";
                DropDownList2.DataSource = query.ToList();
                DropDownList2.DataBind();

                if (DropDownList2.Items.Count !=0)
                {
                    int locaId = Convert.ToInt32(DropDownList2.SelectedValue);
                    LoadComboCircuitos(locaId);
                }
                else
                {
                    DropDownList3.Items.Clear();
                }
            }

            private void LoadComboCircuitos(int locaId)
            {
                var query = from c in context.Circuitos
                            where c.Localidad == locaId
                            select c;
                DropDownList3.DataTextField = "NombreC";
                DropDownList3.DataValueField = "Cod_Circuito";
                DropDownList3.DataSource = query.ToList();
                DropDownList3.DataBind();
            }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
            {
                
               int depaId = Convert.ToInt32(DropDownList1.SelectedValue);
                LoadComboLocalidades(depaId);
            }

            protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
            {
                
              int locaId = Convert.ToInt32(DropDownList2.SelectedValue);
                LoadComboCircuitos(locaId);
            }


    Disculpen si los confundi el codigo de arriba si funciona bien gracias al tutorial de leandro pasa que instale hoy  el visual studio 2013 y por alguna razon cuando cargue el codigo que estaba en visual studio 2012 me cambio el evento del dropdownlist2 asi que ahi esta para quien lo necesite y de nuevo gracias a leandro y su tutorial
    sábado, 21 de febrero de 2015 16:34