Carregar DropDownList através de DataSet com ASP.NET

Neste código veremos como carregar um DropDownList com os Estados.

Logo após o usuário selecionar um Estado será carregado um outro DropDownList com as Cidades correspondente ao Estado selecionado, isto via DataSet.

Neste código foi utilizado C#.

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Projeto.Negocio;


namespace Projeto.Forms
{
    public partial class frmProjeto : System.Web.UI.Page
    { 
      protected void Page_Load(object sender, EventArgs e)
      {
            
          if (!Page.IsPostBack)
          {

             //Carrega DropDownList com Estados
             DataSet dsEstados = Filtros.RetornaListaEstados();
             ddlEstado.DataSource = dsEstados.Tables[0];
             ddlEstado.DataTextField = "estado_sigla";
             ddlEstado.DataValueField = "estado_codigo";
             ddlEstado.DataBind();
             ddlEstado.Items.Add(new ListItem("Todos", "0"));
             ddlEstado.SelectedValue = "0";
          }
      }

            

     protected void ddlEstado_SelectedIndexChanged(object sender, EventArgs e)
     {
        //Limpa os Itens do DropDownList Cidade
        ddlCidade.Items.Clear();
        //Carrega DropDownList com Cidades
        DataSet dsCidades = Filtros.RetornaListaCidades(ddlEstado.SelectedValue);
        ddlCidade.DataSource = dsCidades.Tables[0];
        ddlCidade.DataTextField = "municipios_nome";
        ddlCidade.DataValueField = "municipios_codigo";
        ddlCidade.DataBind();
        ddlCidade.Items.Add(new ListItem("Todos", "0"));
        ddlCidade.SelectedValue = "0";
     }
}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Web;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Projeto.DAO;


namespace Projeto.Negocio
{
    public class Filtros
    {

        public static DataSet RetornaListaEstados()
        {
            try
            {
                //Consulta lista de Estados.
                StringBuilder query = new StringBuilder();
                query.Append("select distinct estado_codigo, estado_sigla from TabelaRegiao order by estado_sigla");

                //Retorna o dataset.
                return Dados.retornaQueryDataSet(query.ToString());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static DataSet RetornaListaCidades(string strEstado)
        {
            try
            {
                //Consulta lista de Cidades.
                StringBuilder query = new StringBuilder();
                query.Append("select distinct municipios_codigo, municipios_nome from TabelaRegiao where estado_codigo = " + strEstado + " order by municipios_nome");

                //Retorna o dataset.
                return Dados.retornaQueryDataSet(query.ToString());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

     }
}



----------------------------------------------------------------------------------------------------------------------------------------------------------------------


using System;
using System.Collections.Generic;
using System.Text;
using System.Data; 
using System.Data.SqlClient;  
using System.Configuration;

namespace Projeto.DAO
{
    public class Dados
    {

      /// <summary>
       /// Método que retorna a conexão com  a base de dados.
       /// </summary>
       /// <returns></returns>
       private static SqlConnection connection()
       {
           try
           {
               //Instância o sqlconnection com a string de conexão.
               SqlConnection sqlconnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"].ToString());

               //Verifica se a conexão esta fechada.
               if (sqlconnection.State == ConnectionState.Closed)
               {
                   //Abre a conexão.
                   sqlconnection.Open();
               }

               //Retorna o sqlconnection.
               return sqlconnection; 


           }
           catch (SqlException ex)
           {
               throw ex;
           }

       }


       /// <summary>
       /// Método que retorna o resultado da consulta sql em um dataset.
       /// </summary>
       /// <param name="query"></param>
       /// <returns></returns>
       public static DataSet retornaQueryDataSet(string query)
       {
           try
           {
               //Instância o sqlcommand com a query sql que será executada e a conexão.
               SqlCommand comando = new SqlCommand(query, connection());

               //Instância o sqldataAdapter.
               SqlDataAdapter adapter = new SqlDataAdapter(comando);

               //Instância o dataSet de retorno.
               DataSet dataSet = new DataSet();

               //Atualiza o dataSet
               adapter.Fill(dataSet);

               //Retorna o dataSet com o resultado da query sql.
               return dataSet;
           }
           catch (Exception ex)
           {
               throw ex;
           }
 
       }
   
     }

}

Nós queremos saber sua opinião aqui