none
DropDownList Carregando dinamicamente itens RRS feed

  • Pergunta

  • Olá pessoal.

    Estou com a seguinte dúvida.

    Tenho 2 DropDownList, o primeiro possui itens de país, e o segundo cidades.
    Quando o usuário selecionar o país, de acordo com o que ele selecionar o segundo DropDownList vai carregar com as cidades de acordo com o item selecionado do primeiro.

    Fiz dessa forma:


    Default.aspx

        Selecione um país:<br />

           <asp:DropDownList ID="ddlPais" runat="server" AutoPostBack="True" 

                onselectedindexchanged="ddlPais_SelectedIndexChanged" ></asp:DropDownList>

        <br />

        <br />

        Selecione a cidade:<br />

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

    Default.aspx.cs

    public partial class _Default : System.Web.UI.Page 

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            if (!Page.IsPostBack)

            {

                CarregarPais();

                CarregarCidade();

            }

        }

     

        public void CarregarPais()

        {

            ddlPais.Items.Add("Selecione uma opção");

            ddlPais.Items.Add("Brasil");

        }

     

        public void CarregarCidade()

        {

            ddlCidade.Items.Add("Selecione uma opção");

        }

        protected void ddlPais_SelectedIndexChanged(object sender, EventArgs e)

        {

     

        }

    }

     

     

     

     

    A minha dúvida é justamente no code do ddlPais, algo como se o item selecione no DropDownList Pais, carrega os itens da cidade.

    domingo, 1 de agosto de 2010 21:54

Respostas

  • Olá Rodrigo, como o Alfredo mencionou poderás utilizar o cascading mas como quer fazer manual, segue a dica.

    1 - Carregue o dropdown com todos os paises selecionando também a propriedade AutoPostBack como true e preenchendo as propriedades DataTextField="nomepais" e DataValueField="CodigoPais"...

    2 - No page on_load tire o método CarregarCidade() e altere a assinatura do mesmo para passar o codigo do pais como parametro, ficando assim: CarregarCodade(int CodigoPais)...

    3 - No evento do DropDown Pais ( ddlPais_SelectedIndexChanged ) chame a sua funcão que acabara de criar passando como parametro o codigo, ficará mais ou menos assim:

        

    CarregarCidade(Convert.ToInt16(ddlPais.SelectedValue));
    

    Poderás também consultar esse site para maiores informações: http://codigofonte.uol.com.br/codigo/aspnet/formularios/carregar-dropdownlist-atraves-de-dataset-com-aspnet

     


    Abraço, Espero ter ajudado. Caso sim, marque-a como tal.
    • Sugerido como Resposta Iter Lubnon domingo, 1 de agosto de 2010 23:17
    • Marcado como Resposta Harley Araujo quarta-feira, 4 de agosto de 2010 15:06
    domingo, 1 de agosto de 2010 23:17
  • Oi,

    Por que não usa um datasource ?

    Se deseja trabalhar em camadas, use um objectDataSource, se deseja fazer um acesso a banco bem simples, utilize um sqlDataSource.

    Criar um modelo do entity framework e utilizar o entityDataSource também é possível.

    []'s

    Dennes
    *Treinamento de ASP.NET 3.5 c/VS 2010 por apenas 12x R$ 66,15 - dia 02/08  - inscreva-se em http://www.bufaloinfo.com.br/cursos/aspnet2.asp

    http://www.bufaloinfo.com.br


    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp
    • Marcado como Resposta Harley Araujo quarta-feira, 4 de agosto de 2010 15:06
    domingo, 1 de agosto de 2010 23:22

Todas as Respostas

  • Olá Rodrigo, aconcelho a você o Ajax CascadingDropDown

     

    http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/CascadingDropDown/CascadingDropDown.aspx

     

     Ate Mais

     

    Alfredo Ouro

    domingo, 1 de agosto de 2010 22:42
  • Olá Alfredo,
    Fico grato pela sua resposta, já sabia dessa forma em Ajax Control Tool Kit.
    Porém queria apenas fazer isso em algumas linhas em meu code, como citado acima só basta esse método para concluir

    domingo, 1 de agosto de 2010 23:02
  • Olá Rodrigo, como o Alfredo mencionou poderás utilizar o cascading mas como quer fazer manual, segue a dica.

    1 - Carregue o dropdown com todos os paises selecionando também a propriedade AutoPostBack como true e preenchendo as propriedades DataTextField="nomepais" e DataValueField="CodigoPais"...

    2 - No page on_load tire o método CarregarCidade() e altere a assinatura do mesmo para passar o codigo do pais como parametro, ficando assim: CarregarCodade(int CodigoPais)...

    3 - No evento do DropDown Pais ( ddlPais_SelectedIndexChanged ) chame a sua funcão que acabara de criar passando como parametro o codigo, ficará mais ou menos assim:

        

    CarregarCidade(Convert.ToInt16(ddlPais.SelectedValue));
    

    Poderás também consultar esse site para maiores informações: http://codigofonte.uol.com.br/codigo/aspnet/formularios/carregar-dropdownlist-atraves-de-dataset-com-aspnet

     


    Abraço, Espero ter ajudado. Caso sim, marque-a como tal.
    • Sugerido como Resposta Iter Lubnon domingo, 1 de agosto de 2010 23:17
    • Marcado como Resposta Harley Araujo quarta-feira, 4 de agosto de 2010 15:06
    domingo, 1 de agosto de 2010 23:17
  • Oi,

    Por que não usa um datasource ?

    Se deseja trabalhar em camadas, use um objectDataSource, se deseja fazer um acesso a banco bem simples, utilize um sqlDataSource.

    Criar um modelo do entity framework e utilizar o entityDataSource também é possível.

    []'s

    Dennes
    *Treinamento de ASP.NET 3.5 c/VS 2010 por apenas 12x R$ 66,15 - dia 02/08  - inscreva-se em http://www.bufaloinfo.com.br/cursos/aspnet2.asp

    http://www.bufaloinfo.com.br


    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp
    • Marcado como Resposta Harley Araujo quarta-feira, 4 de agosto de 2010 15:06
    domingo, 1 de agosto de 2010 23:22