DropdownList anidados en ASP.NET C#

Cargar DropDownList anidados en ASP.NET C# es posible haciendo una llamada al servidor a partir de la selección de un elemento de una primera lista.

DropdownList anidados en ASP

Agregar controles DropDownList en aspx

Debemos agregar dos propiedades más al primer control DropDownList en aspx para posteriormente cargar una segunda.

El siguiente código muestra la estructura de la primera lista:

<asp:DropDownList runat="server" ID="ddlLista" OnSelectedIndexChanged="ddlLista_SelectedIndexChanged" AutoPostBack="true" />
  • OnSelectedIndexChanged determina el método que se llamara para cargar la segunda lista.
  • AutoPostBack permite la llamada al servidor.

La segunda lista podemos agregarlo como sigue:

<asp:DropDownList runat="server" ID="ddlListaDos" />

Cargar DropDownList desde C#

Agregamos elementos a la primera lista como lo hicimos en un post anterior, sin embargo, utilizaremos un control más.

if(!Page.IsPostBack){
    ListItem i;
    i = new ListItem("Nuevo leon", "1");
    ddlLista.Items.Add(i);
    i = new ListItem("Mexico", "2");
    ddlLista.Items.Add(i);
    i = new ListItem("Puebla", "3");
    ddlLista.Items.Add(i);
}
  • Con la condicionante if(!Page.IsPostBack) evito que se cargue nuevamente la lista al realizar la selección de un elemento.
  • Si quitan la condición los elementos se duplicarán cada vez que seleccionen un elemento (compruébelo).
DropdownList anidados

Podría interesarte Llenar un control DropDownList en ASP.Net C#  

Creamos un método con el nombre que definimos en la propiedad OnSelectedIndexChanged, quedando como sigue:

protected void ddlLista_SelectedIndexChanged(object sender, EventArgs e)
{
}

Es posible que al agregar la propiedad OnSelectedIndexChanged en la página aspx se creara el método automáticamente.

En este método cargaremos elementos a la segunda lista de acuerdo con el elemento seleccionado de la primera lista:

protected void ddlLista_SelectedIndexChanged(object sender, EventArgs e)
{
    ListItem i;
    ddlListaDos.Items.Clear();
        if (ddlLista.SelectedValue == "1") {
        i = new ListItem("Nuevo leon 1", "1");
        ddlListaDos.Items.Add(i);
        i = new ListItem("Nuevo leon 2", "2");
        ddlListaDos.Items.Add(i);
    }
    else if (ddlLista.SelectedValue == "2")
    {
        i = new ListItem("Mexico 1", "1");
        ddlListaDos.Items.Add(i);
        i = new ListItem("Mexico 2", "2");
        ddlListaDos.Items.Add(i);
    }
}
  • if (ddlLista.SelectedValue == “1”), permite definir qué acción realizar de acuerdo con el elemento seleccionado.
  • ddlListaDos.Items.Clear(); limpia la lista cada vez que se llama al método, evita que se carguen elementos de otra selección.
DropdownList anidados en ASP.NET C#

Podría interesarte Ocultar elementos de un DropdownList en ASP.NET C#  

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *