NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosASP.NET › Capítulo 15 : 02
Quer receber novidades e e-books gratuitos?
« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
ASP.NET - CURSO COMPLETO
Autor: Júlio Battisti
Lição 121 - Capítulo 15 - Criação de listas dinâmicas

Neste exemplo iremos construir um formulário com três controles do tipo DropDownList, conforme indicado a seguir:

• ListaPaises: Este controle irá exibir uma lista dos países para os quais existem pedidos, a partir da tabela Pedidos do banco de dados NorthWind.mdb.

• ListaCidades: Este controle irá exibir uma lista das cidades para os quais existem pedidos, a partir da tabela Pedidos do banco de dados NorthWind.mdb. Quando a página é carregada pela primeira vez, esta lista está vazia. Quando o usuário seleciona um país na lista de países, a página é recarregada e são exibidas as cidades para o país selecionado.

• ListaPedidos: Este controle irá exibir uma lista dos pedidos para a cidade selecionada na lista de cidades. Quando a página é carregada pela primeira vez, esta lista está vazia. Quando o usuário seleciona um país, a página é recarregada e são exibidas as cidades para o país selecionado. A lista de pedidos continua vazia. Quando o usuário seleciona uma cidade, na lista de cidades, a página é recarregada e são exibidos os pedidos para a cidade selecionada. Quando o usuário seleciona um pedido na lista, são exibidas informações sobre o pedido. Para exibir as informações sobre o pedido, utilizamos diversos controles do tipo TextBox.

Na Listagem 15.1 temos o código para o exemplo proposto. Após a listagem apresentaremos mais alguns comentários sobre o exemplo.

Listagem 15.1 – Estrutura básica para a criação de um Web Service.

<%@ Page Language="C#" Debug="true"  %>
   <%@ Import Namespace="System.Data"  %>
   <%@ Import  Namespace="System.Data.OleDb" %>
<html>
   <script language="C#"  runat="server">
    
    // Declaro variáveis que serão globais para a  página.
     
                   OleDbDataAdapter MeuComando;
                   String auxSQL1;
                   String auxSQL2;
                   String comandoSQL;
                   DataSet ds = new DataSet();
                   OleDbConnection MinhaConexão;
                   String DefineConexão=  "PROVIDER=MICROSOFT.JET.OLEDB.4.0;" +
                                          "DATA SOURCE=c:\\meus  documentos\\NorthWind.mdb";
     
                   protected void Page_Load(Object Src, EventArgs  E ) 
      {
        if  (!Page.IsPostBack)
               {
         
               OcultaControles();
                           String auxSQL1;
                           String  auxSQL2;
                           String  comandoSQL;
         
                           auxSQL1 = "Select PaísDeDestino From  Pedidos";
                           auxSQL2 = " Group By PaísDeDestino Order By PaísDeDestino";
         
                           comandoSQL  = auxSQL1+auxSQL2; 
                                       MinhaConexão  = new OleDbConnection(DefineConexão);
         
                           MeuComando = new OleDbDataAdapter(comandoSQL,  MinhaConexão);
                           MeuComando.Fill(ds);
         
                           DataView source = new  DataView(ds.Tables[0]);
               
                           ListaPaises.DataSource =  source ;
                           ListaPaises.DataBind();
                           ListaPaises.Items.Insert(0,"");
         
               }
      }
    
   void  OcultaControles()
      {
               txtNúmeroDoPedido.Visible=false;
               txtCódigoDoCliente.Visible=false;
               txtDataDoPedido.Visible=false;
               txtFrete.Visible=false;
               txtNomeDoDestinatário.Visible=false;
               txtPaísDeDestino.Visible=false;
               txtCidadeDeDestino.Visible=false;
      }
  
      void  PaísSelecionado(Object sender, EventArgs e) 
           {
    
              if (ListaPaises.SelectedItem.Value!="")
                 {
                            OcultaControles();
                            auxSQL1 = "Select  CidadeDeDestino From Pedidos  Where  PaísDeDestino='";
                           auxSQL2 = ListaPaises.SelectedItem.Value + "' Group By  CidadeDeDestino Order 
          By  CidadeDeDestino";
                       
                           comandoSQL = auxSQL1+auxSQL2; 
                       
                           MinhaConexão = new OleDbConnection(DefineConexão);
                            MeuComando = new  OleDbDataAdapter(comandoSQL, MinhaConexão);
                       
                           MeuComando.Fill(ds);
                       
                           DataView source = new  DataView(ds.Tables[0]);
                           
                           ListaCidades.DataSource=source;
                           ListaCidades.DataBind();
                           ListaCidades.Items.Insert(0,"");
                           ListaPedidos.SelectedIndex=0;
                  }
          }
    
   void CidadeSelecionada(Object sender,  EventArgs e) 
          {
    
              if (ListaCidades.SelectedItem.Value!="")
                 {
                           OcultaControles();
                           auxSQL1  = "Select * From Pedidos  Where CidadeDeDestino='";
                           auxSQL2  = ListaCidades.SelectedItem.Value + "' Order By NúmeroDoPedido";
                       
                           comandoSQL = auxSQL1+auxSQL2; 
                       
                           MinhaConexão = new OleDbConnection(DefineConexão);
                           MeuComando  = new OleDbDataAdapter(comandoSQL, MinhaConexão);
                       
                           MeuComando.Fill(ds);
                           DataView  source = new DataView(ds.Tables[0]);
                           
                           ListaPedidos.DataSource=source;
                           ListaPedidos.DataBind();
                           ListaPedidos.Items.Insert(0,"");
                  }
                          
          }
   void PedidoSelecionado(Object sender,  EventArgs e) 
          {
    
            if (ListaCidades.SelectedItem.Value!="")
               {
                           auxSQL1  = "Select * From Pedidos  Where  NúmeroDoPedido=";
                           auxSQL2  = ListaPedidos.SelectedItem.Value + " Order By NúmeroDoPedido";
                       
                           comandoSQL = auxSQL1+auxSQL2; 
                       
                           MinhaConexão = new OleDbConnection(DefineConexão);
                           MeuComando = new  OleDbDataAdapter(comandoSQL, MinhaConexão);
                       
                           MeuComando.Fill(ds);
                       
                           DataView source = new  DataView(ds.Tables[0]);
                           
                           DataTable  Pedidos = ds.Tables[0];
                                                  
                           DataRow Linha =  Pedidos.Rows[0];
                                                  
                            txtNúmeroDoPedido.Visible=true;
                           txtCódigoDoCliente.Visible=true;
                           txtDataDoPedido.Visible=true;
                           txtFrete.Visible=true;
                           txtNomeDoDestinatário.Visible=true;
                           txtPaísDeDestino.Visible=true;
                           txtCidadeDeDestino.Visible=true;
           
                           txtNúmeroDoPedido.Text       = Linha["NúmeroDoPedido"].ToString();
                           txtCódigoDoCliente.Text        =  Linha["CódigoDoCliente"].ToString();
                           txtDataDoPedido.Text                         =  Linha["DataDoPedido"].ToString();
                           txtFrete.Text                            =  Linha["Frete"].ToString();
                           txtNomeDoDestinatário.Text  = Linha["NomeDoDestinatário"].ToString();
                           txtPaísDeDestino.Text                         =  Linha["PaísDeDestino"].ToString();
                           txtCidadeDeDestino.Text        =  Linha["CidadeDeDestino"].ToString();
             }
          }
</script>
<body>
      
   <h3>
               <font  face="Verdana">
               Selecione  um País na lista de países.
               <BR>
               Em  seguida uma cidade na lista de cidades.
               <BR>
               E  por último, um pedido na lista de Pedidos.
               </font>
   </h3>   
   <HR>
            <form  runat=server>
            <div  align="left">
                 <table border="0">
                <tr>
                           <td>
                                       <p  align="right">
                                       <B>Selecione um País  ->></B>
                            </td>
        
                           <td>
                                       <asp:DropDownList 
                                                  id="ListaPaises"
                                                              runat="server"
                                                              BackColor="#c0c0c0"
                                                              Font-Bold="True"
                                                              DataTextField  = "PaísDeDestino"
                                                              DataValueField  = "PaísDeDestino"
                                                  AutoPostBack  = "True"
                                                  onSelectedIndexChanged  = "PaísSelecionado"
                                                  >
                                       </asp:DropDownList>
                           </td>
                 </tr>   
                  <tr>
                           <td>
                                       <p  align="right">
                                       <B>Selecione uma  Cidade ->></B>
                            </td>
        
                           <td>
                                       <asp:DropDownList 
                                                  id="ListaCidades"
                                                              runat="server"
                                                              BackColor="#c0c0c0"
                                                              Font-Bold="True"
                                                              DataTextField  = "CidadeDeDestino"
                                                              DataValueField  = "CidadeDeDestino"
                                                  AutoPostBack  = "True"
                                                  onSelectedIndexChanged  = "CidadeSelecionada"
                                      >
                                       </asp:DropDownList>
                           </td>
               </tr>                   
                <tr>
                           <td>
                                       <p  align="right">
                                       <B>Selecione um Pedido  ->></B>
                            </td>
        
                           <td>
                                       <asp:DropDownList 
                                                  id="ListaPedidos"
                                                              runat="server"
                                                              BackColor="#c0c0c0"
                                                              Font-Bold="True"
                                                              DataTextField  = "NúmeroDoPedido"
                                                              DataValueField  = "NúmeroDoPedido"
                                                  AutoPostBack = "True"
                                                  onSelectedIndexChanged  = "PedidoSelecionado"
                                                  >
                                       </asp:DropDownList>
                           </td>
                 </tr>                 
                 <tr>
                            <td>
                                       <p  align="right">
                                       <B>Número do  Pedido:</B>
                           </td>
                           <td>
                                       <asp:TextBox 
                                                   runat=server
                                                   id="txtNúmeroDoPedido"
                                                   Text=""
                                                   TextMode="SingleLine" 
                                                   Font_Face="Arial"  Font_Size="3"
                                                   Height="20"
                                                   Width="200"
                                                   Enabled="False"
                                        />
                           </td>
                 </tr>   
                 <tr>
                           <td>
                                       <p  align="right">
                                       <B>Código do  Cliente:</B>
                           </td>
                           <td>
                                       <asp:TextBox 
                                                   runat=server
                                                   id="txtCódigoDoCliente"
                                                   Text=""
                                                   TextMode="SingleLine" 
                                                   Font_Face="Arial"  Font_Size="3"
                                                   Height="20"
                                                   Width="200"
                                                   Enabled="False"
                                   />
                           </td>
                </tr>    
              <tr>
                                 <td>
                                                    <p  align="right">
                                                   <B>Data  do Pedido:</B>
                                 </td>
                                 <td>
                                       <asp:TextBox 
                                                   runat=server
                                                   id="txtDataDoPedido"
                                                   Text=""
                                                   TextMode="SingleLine" 
                                                   Font_Face="Arial"  Font_Size="3"
                                                   Height="20"
                                                   Width="200"
                                                   Enabled="False"
                                   />
                           </td>
                 </tr>   
              <tr>
                            <td>
                                       <p  align="right">
                                       <B>Frete:</B>
                           </td>
                           <td>
                                       <asp:TextBox 
                                                   runat=server
                                                   id="txtFrete"
                                                   Text=""
                                                   TextMode="SingleLine" 
                                                   Font_Face="Arial"  Font_Size="3"
                                                   Height="20"
                                                   Width="200"
                                                   Enabled="False"
                                       />
                           </td>
                 </tr>   
                 <tr>
                           <td>
                                                   <p  align="right">
                                                   <B>Nome do  Destinatário:</B>
                            </td>
                           <td>
                                       <asp:TextBox 
                                                   runat=server
                                                   id="txtNomeDoDestinatário"
                                                   Text=""
                                                   TextMode="SingleLine" 
                                                   Font_Face="Arial"  Font_Size="3"
                                                   Height="20"
                                                   Width="200"
                                                   Enabled="False"
                                       />
                           </td>
                 </tr>   
                 <tr>
                            <td>
                                       <p  align="right">
                                       <B>País  de Destino:</B>
                            </td>
                            <td>
                                       <asp:TextBox 
                                                   runat=server
                                                   id="txtPaísDeDestino"
                                                   Text=""
                                                   TextMode="SingleLine" 
                                                   Font_Face="Arial"  Font_Size="3"
                                                   Height="20"
                                                   Width="200"
                                                   Enabled="False"
                                       />
                           </td>
                 </tr>   
                 <tr>
                           <td>
                                       <p  align="right">
                                       <B>Cidade de  Destino:</B>
                            </td>
                            <td>
                                       <asp:TextBox 
                                                   runat=server
                                                   id="txtCidadeDeDestino"
                                                   Text=""
                                                   TextMode="SingleLine" 
                                                   Font_Face="Arial"  Font_Size="3"
                                                   Height="20"
                                                   Width="200"
                                                   Enabled="False"
                                       />
                           </td>
                 </tr>   
</table>
   </div>
</form>
</body>
   </html>

Digite o código da Listagem 15.1 e salve o mesmo em um arquivo chamado chap15ex1.aspx, na pasta chap15, dentro da pasta wwwroot, conforme descrito no item: “Check List para acompanhar os exemplos deste livro”, no Capítulo 6.

Para acessar esta página utilize o seguinte endereço:

http://localhost/chap12/chap15ex1.aspx

Ao carregar a página você obtém o resultado indicado na Figura 15.1. Inicialmente apenas a lista de países está preenchida, conforme destacado na Figura 15.1.

Curso Completo de ASP.NET - Júlio Battisti
Figura 15.1 Lista de países já preenchida.

Este lista é preenchida com o auxílio do evento Page_Load, onde estabelecemos uma conexão com o banco de dados NorthWind.mdb e retornamos a lista de países da tabela Pedidos. Por último adicionamos um elemento em branco (“ “), como primeiro elemento da lista de Países. Este elemento é adicionado para que nenhum país esteja selecionada por padrão, ou seja, o usuário deve abrir a lista e selecionar um país:

ListaPaises.Items.Insert(0,"");

Na lista de páises selecione Brasil. Ao selecionar um país na lista, será disparado o evento onSelectedIndexChanged, do controle ListaPaises. Em resposta a este evento, configuramos o procedimento “PaísSelecionado”:

onSelectedIndexChanged = "PaísSelecionado"

O procedimento PaísSelecionado faz uma conexão com o banco de dados NorthWind.mdb e retorna apenas as cidades para o país selecionado. Os dados retornados são atribuídos ao congrole ListaCidades, através do uso da propriedade DataSource e do método DataBind. Por último adicionamos um elemento em branco (“ “), como primeiro elemento da lista de cidades. Este elemento é adicionado para que nenhuma cidade seja selecionada por padrão, ou seja, o usuário deve abrir a lista e selecionar uma cidade. Abra a lista de cidades e selecione São Paulo, conforme indicado na Figura 15.2.

Curso Completo de ASP.NET - Júlio Battisti
Figura 15.2 Selecionando uma cidade.

Ao selecionar uma cidade na lista de cidades, será disparado o evento onSelectedIndexChanged, do controle ListaCidades. Em resposta a este evento, configuramos o procedimento “CidadeSelecionada”:

onSelectedIndexChanged = "CidadeSelecionada"

O procedimento CidadeSelecionada faz uma conexão com o banco de dados NorthWind.mdb e retorna apenas os pedidos para a cidade selecionada. Os dados retornados são exibidos nos respectivos controles TextBox da página. O procedimento CidadeSelecionada também torna a propriedade Visible, dos controles TextBox, igual a True, de tal forma que estes controles sejam exibidos na página. Selecione o pedido número: 10494, os dados para o pedido selecionado serão exibidos, conforme indicado na Figura 15.3.

Curso Completo de ASP.NET - Júlio Battisti
Figura 15.3 Exibindo os dados do pedido selecionado.

Se você selecionar uma outra cidade, os controles TextBox são ocultados e a lista de pedidos será redefinida para que sejam exibidos os pedidos para a cidade selecionada. Isto é feito pelo procedimento CidadeSelecionada, o qual é disparado toda vez que uma nova cidade for selecionada. Se você selecionar um novo país, a lista de cidades será redefinida para exibir as cidades do país selecionado e o controle ListaPedidos será desabilitado. Quando você seleciona uma cidade, na lista de cidades, o controle ListaPedidos é habilitado e passa a exibir os pedidos para a cidade selecionada.

Neste exemplo vimos algumas técnicas interessantes, as quais possibilitam a criação de formulários para pesquisas com um ou mais critérios. O grande “segredo” deste exemplo, é a correta utilização da propriedade onSelectedIndexChanged, do controle DropDownList.

« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
Quer receber novidades e e-books gratuitos?

 
 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2024 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI