Preenchendo um controle DropDowlist
Preencher uma caixa de combinação(dropdownlist) com as informações de uma base de dados Access ou SQL Server é muito simples no ASP.NET. Neste artigo eu vou mostrar como você pode fazer isto.
Para este artigo eu vou criar uma base de dados no Access chamada Formula1.mdb e neste banco de dados a tabela Pilotos e a tabela Corridas ; cada uma terá a seguinte estrutura :
Tabela Pilotos com os nomes , números e equipes dos pilotos da fórmula 1 atual. | Tabela Corridas com as corridas de fórmula 1 da temporada. |
Vou criar uma página ASP.NET onde irei carregar uma caixa de combinação com o nome(NomeCorrida) das corridas e oito , eu disse oito, caixa de combinações com os nomes dos Pilotos. A ídéia a criar um formulário onde o usuário possa fazer um palpite quanto a classificação do grid de largada. Só vou implementar o preenchimento das combos.
Use o Visual Studio.NET ou o bloco de notas ( a escolha é sua ...) e cria um arquivo com a extensão . aspx ( dica : para salvar o arquivo com esta extensão no bloco de notas clique em Salvar Como e informe o nome do arquivo completo com extensão entre aspas.). Ex: f1Palpite.aspx. (este será o nome do nosso arquivo). Agora digite o código conforme mostrado abaixo: arquivo f1palpite.aspx
<%@
Import Namespace="System.Data.OLEDB" %> <script language="VB" runat="server"> Sub Page_Load(Src As Object, E As EventArgs) Dim strConn as string ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & server.MapPath & "/dados/Formula1.mdb" Dim Conn1 as OLEDBConnection Dim Rdr1 as OLEDBDatareader Dim Cmd1 as OLEDBCommand Dim strSQL as string Conn1=New OLEDBConnection(strConn) strSQL="select distinct NomeCorrida from Corridas" Cmd1=New OLEDBCommand(strSQL,Conn1) Conn1.Open() Rdr1=Cmd1.ExecuteReader() cr.DataSource = Rdr1 cr.DataBind() Rdr1.Close() strSQL="select NomePiloto from Pilotos" Cmd1.commandtext=strSQL Rdr1=Cmd1.ExecuteReader() pl1.DataSource = Rdr1 pl1.DataBind() Rdr1.Close() strSQL="select NomePiloto from Pilotos" Cmd1.commandtext=strSQL Rdr1=Cmd1.ExecuteReader() pl2.DataSource = Rdr1 pl2.DataBind() Rdr1.Close() strSQL="select NomePiloto from Pilotos" Cmd1.commandtext=strSQL Rdr1=Cmd1.ExecuteReader() pl3.DataSource = Rdr1 pl3.DataBind() Rdr1.Close() strSQL="select NomePiloto from Pilotos" Cmd1.commandtext=strSQL Rdr1=Cmd1.ExecuteReader() pl4.DataSource = Rdr1 pl4.DataBind() Rdr1.Close() strSQL="select NomePiloto from Pilotos" Cmd1.commandtext=strSQL Rdr1=Cmd1.ExecuteReader() pl5.DataSource = Rdr1 pl5.DataBind() Rdr1.Close() strSQL="select NomePiloto from Pilotos" Cmd1.commandtext=strSQL Rdr1=Cmd1.ExecuteReader() pl6.DataSource = Rdr1 pl6.DataBind() Rdr1.Close() strSQL="select NomePiloto from Pilotos" Cmd1.commandtext=strSQL Rdr1=Cmd1.ExecuteReader() pl7.DataSource = Rdr1 pl7.DataBind() Rdr1.Close() strSQL="select NomePiloto from Pilotos" Cmd1.commandtext=strSQL Rdr1=Cmd1.ExecuteReader() pl8.DataSource = Rdr1 pl8.DataBind() Rdr1.Close() Conn1.close() End Sub </script> <html><head> |
Explicando o código : Todo código esta no evento Load da página
1- definimos a string de conexão usando um provedor OLEDB , pois o banco de dados Formula1.mdb é um banco de dados Microsoft Access; a seguir declaramos as variáveis objeto que iremos usar no código.
Dim
strConn as string
="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
" & server.MapPath &
"/dados/Formula1.mdb" Dim Conn1 as OLEDBConnection Dim Rdr1 as OLEDBDatareader Dim Cmd1 as OLEDBCommand Dim strSQL as string |
2- Abrimos a conexão : Conn1=New OLEDBConnection(strConn)
3- Criamos um objeto OleDbCommand na conexão , e executamos a propriedade ExecuteReader do objeto DataReader. O objeto cr é a caixa de combinação definida mais abaixo no código. Fechamos o DataReader pois ele mantém um conexão direta com a base de dados
strSQL="select distinct NomeCorrida
from Corridas" Cmd1=New OLEDBCommand(strSQL,Conn1) Conn1.Open() Rdr1=Cmd1.ExecuteReader() cr.DataSource = Rdr1 cr.DataBind() Rdr1.Close() |
4- O código abaixo é repetido para os demais controles : Definimos o tipo do objeto OleDbCommand (cmd1) e executamos os mesmos passos para a caixa de combinação pl1.(pl2, pl3, pl4, ...)
strSQL="select NomePiloto from
Pilotos" Cmd1.commandtext=strSQL Rdr1=Cmd1.ExecuteReader() pl1.DataSource = Rdr1 pl1.DataBind() Rdr1.Close() |
5- O código abaixo refere-se aos controles usados na página. Definimos o objeto do tipo Table e em cada célula o objeto DropDowList (que eu estou chamando caixa de combinação) com a propriedade id identificando cada controle e a propriedade datatextfield indicando o campo vinculado ao controle.
<asp:Table runat="server"
GridLines="both"
BorderWidth="0px"> <asp:TableRow> <asp:TableCell>NomeCorrida</asp:TableCell> <asp:TableCell><ASP:DropDownList id="cr" datatextfield="NomeCorrida" runat="server"/> </asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell>Grid de Classificação - Largada</asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell>Grid - 1o. Lugar</asp:TableCell> <asp:TableCell><ASP:DropDownList id="pl1" datatextfield="NomePiloto" runat="server"/> </asp:TableCell> </asp:TableRow> ..... |
Vejamos as propriedades de um controle DropDownList :
- AutoPostBack - Se for True causa um envio (post) do formulário quando o cliente altera o item selecionado.
- DataSource - Referencia a fonte de dados que o controle usa para preencher os itens.
- DataTextField - É usado para preencher o campo Text dos itens.
- DataValueField - Usado para preencher o campo Value dos itens.
- Items - Coleção de objetos ListItem onde cada objeto representa um item.
- SelectedItem - Uma referência o item selecionado.
- SelectedIndex - Informa o índice do item selecionado. O primeiro tem índice igual a zero.
Evento de um DropDownList : OnSelectedIndexChanged - Iniciado quando o controle tem a propriedade AutoPostBack igual a True e ocorre mudança no item selecionado.
O arquivo f1palpite.aspx foi colocado no diretório f1 subordinado a \inetpub\wwwroot. Ao executarmos a página teremos o resultado:
Veja o resultado on-line em : http://www.macoratti.net/f1/f1palpite.aspx
Moleza não é mesmo ... Aguarde mais artigos sobe ASP.NET e o DataGrid...
Referências:
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Criando banco de dados e tabelas com Web Matrix - Macoratti.net