C# - Preenchendo um DropDownList em uma página ASP .NET


Vamos preencher um DropDownList em uma página ASP .NET usando a linguagem C#.

Recebo alguns emails de iniciantes que desejam criar aplicações para web usando ASP .NET que pensam que ASP .NET é uma linguagem.

ASP .NET não é uma linguagem de programação como VBScript , ASP, Vb .NET, C# , etc, nem um servidor Web como o Apache, IIS, TomCat,etc.

Mas então o que é ASP .NET ?

ASP.NET é a plataforma da Microsoft para o desenvolvimento de aplicações Web e é o sucessor da tecnologia ASP.

O ASP.NET é baseado no Framework .NET que esta na sua versão 3.5, herdando todas as suas características, por isso, como qualquer aplicação .NET, as aplicações para essa plataforma podem ser escritas em várias linguagens, como Visual Basic e C#.

Você pode criar páginas ASP .NET usando a linguagem VB .NET ou C# .

Quando você inicia o Visual Web Developer 2008 Express ou o Visual Studio para criar páginas ASP .NET você pode escolher a linguagem na qual deseja criar o seu projeto web.

Veja abaixo a janela New Web Site apresentada quando você selecione o menu File -> New Web Site no VWD 2008 Express Edition;

Perceba que você escolhe o Template , geralmente um ASP .NET Web Site; informe o nome do web site e na caixa Language escolhe qual linguagem vai usar : Visual Basic ou C#.

Neste artigo estamos criando um novo web site chamado preencheDDL usando a linguagem C#.

Vamos preencher um dropdownlist a partir de um banco de dados Microsoft Access, o famoso Northwind.mdb. Iremos exibir no dropdownlist o nome do produto e definir o valor do campo productID como o valor que será usado para atualizar os dados em uma seleção.

Após criar o web site devemos definir uma conexão com o banco de dados Northwind.mdb , se ela ainda não existir.

Abra a janela DataBase Explorer e clique em Data Connections selecionando Add Connection;

A seguir Selecione o Data Source como Microsoft Access DataBase e informe o caminho e nome do banco de dados , no meu caso c:\dados\Northwind.mdb;

Agora selecione a formulário web Default.aspx e inclua , a partir da ToolBox, os componentes:

A definição das propriedades DataTextField e DataValueField define o campo a ser exibido e o valor a ser usado para atualização dos dados.

Para fazer a conexão com o banco de dados vamos usar o provedor Oledb no namespace : System.Data.OleDb.

A string e conexão para o banco de dados Northwind.mdb é definida assim :

"Provider=Microsoft.JET.OLEDB.4.0;data source=c:\dados\Northwind.mdb"

Vamos definir a string de conexão no arquivo Web.Config na seção <connectionStrings> conforme abaixo:

<configuration>
..........
<connectionStrings>
<add name="
MsAccessConnectionString"
connectionString=
"Provider=Microsoft.JET.OLEDB.4.0;data source=c:\dados\Northwind.mdb" providerName="System.Data.OleDb" />
</connectionStrings>
................

A string de conexão é identificada pelo nome : MsAccessConnectionString e será recuperada da seguinte forma :

string connStr = ConfigurationManager.ConnectionStrings["MsAccessConnectionString"].ConnectionString;

Agora vamos definir o código para o evento Click do botão Preencher :

protected void btnPreencheDDL_Click(object sender, EventArgs e)
{
    preencheDDL();
}

A rotina preencheDDL() deverá acessar o banco de dados e preencher o dropdownlist. Para isso eu vou usar um DataReader;

   private void preencheDDL()
    {
            OleDbConnection oConn = null;
            OleDbCommand oComm;
            OleDbDataReader oReader;
            string sSQL;

            sSQL = "SELECT  ProductID, ProductName From Products";
            string connStr = ConfigurationManager.ConnectionStrings["MsAccessConnectionString"].ConnectionString;
            try
            {
                oConn = new OleDbConnection(connStr);
                oConn.Open();

                oComm = new OleDbCommand(sSQL, oConn);
                oReader = oComm.ExecuteReader();

                ddl.DataSource = oReader;
                ddl.DataBind();
            }
            catch (OleDbException oledbex)
            {
                throw oledbex;
            }
            finally
            {
                if(oConn.State == ConnectionState.Open)
                     oConn.Close();
            }
    }

Após definir a string de conexão a instrução SQL -  "SELECT  ProductID, ProductName From Products";  - que irá selecionar o código do produto e o nome do produto da tabela Products, criamos um objeto OledbCommand e através do método ExecuteReader geramos um datareader  que é atribuído a propriedade DataSource do dropdowlist (ddl).

Ao efetuar uma seleção usamos o evento SelectedIndexChanged do dropdownlist para exibir o valor através do código abaixo:

 protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
    {
        lblDDL.Text = "Voce selecionou " + ddl.SelectedItem.Text + " (" + ddl.SelectedItem.Value + ").";
    }

Executando a página web temos na primeira tela(fig 1.0) o preenchimento do dropwonlist após clicar no botão Preencher;

Em seguida ao efetuar uma seleção temos o resultado final exibido na fig 2.0;

Fig 1.0 Fig 2.0

Desta forma vimos como preencher um Dropdownlist usando C#.

Pegue o projeto completo aqui :  preencheDDL.zip

Eu sei é apenas C# mas eu gosto...

Referências:


José Carlos Macoratti