domingo, 8 de abril de 2012

ASP .NET - Filtrando dados em um GridView (revisão)

ASP .NET - Filtrando dados em um GridView (revisão)



Este artigo é uma revisão de conceitos básicos para aplicações ASP .NET Web Forms, nele vamos tratar dos seguintes assuntos:

  • Vincular dados em um controle GridView usando o controle SqlDataSource;
  • Filtrar dados na página ASP .NET com base em um critério selecionado pelo usuário;

Recursos usados:

  1. Visual Web Developer 2010 Express Edition
  2. SQL Server 2008 Express Edition
  3. Banco de dados Northwind.mdf

Abra o Visual Web Developer 2010 Express Edition e no menu File selecione New Web Site e escolha o template ASP .NET Empty Web Site informando o nome Filtrar_GridView;


A seguir no menu WebSite clique em Add New Item e selecione o template Web Form e aceite o nome padrão Default.aspx e clique em Add;


A seguir abra a janela DataBase Explorer e expanda a conexão com o banco de dados Northwind.mdf;

Selecione a página Default.aspx e no modo Design selecione a tabela Customers e arraste-a para a página no descritor:


Após soltar a tabela na página será incluído um controle GridView e um controle SqlDataSource vinculando os dados da tabela ao controle:


Agora vamos incluir um controle Dropdownlist (ID=ddlCampo) , um controle TextBox(ID=txtCriterio) e um controle Button(ID=btnFiltrar) na página conforme o código abaixo:

Para isso vamos definir no controle DropDownList na propriedade Items as seguintes propriedades:


O código completo é mostrado a seguir:

<span class="style1"><strong>Filtrar</strong></span>
<asp:DropDownList ID="ddlCampo" runat="server" Height="23px" Width="130px">
<asp:ListItem Value="CompanyName">Nome Empresa</asp:ListItem>
<asp:ListItem Value="ContactName">Nome Contato</asp:ListItem>
<asp:ListItem Value="City">Cidade</asp:ListItem>
<asp:ListItem Value="Country">Pais</asp:ListItem>
</asp:DropDownList>
&nbsp; como &nbsp; <asp:TextBox ID="txtCriterio" runat="server" Width="194px"></asp:TextBox>
&nbsp;<asp:Button ID="btnFiltrar" runat="server" Text="Filtrar" Width="61px" />


Abaixo vemos como ficou o leiaute da página:


No evento Click do botão de comando inclua o seguinte código:

 Protected Sub btnFiltrar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFiltrar.Click

        Dim FilterExpression As String = String.Concat(ddlCampo.SelectedValue, " LIKE '%{0}%'")
        SqlDataSource1.FilterParameters.Clear()
        SqlDataSource1.FilterParameters.Add(New ControlParameter(ddlCampo.SelectedValue, "txtCriterio", "Text"))
        SqlDataSource1.FilterExpression = FilterExpression

    End Sub

Agora basta executar o web site e selecionar um campo via controle dropdownlist e definir um critério controle TextBox e clicar no botão FIltrar.

Abaixo vemos o resultado para o campo Cidade e critério igual a Sao Paulo:


A seguir definimos o campo Nome Contato e o critério Ma;


A mágica é feita pela expressão onde temos a cláusula LIKE e o coringa %;

Dim FilterExpression As String = String.Concat(ddlCampo.SelectedValue, " LIKE '%{0}%'")

O critério é defino pela linha de código abaixo onde obtemos o parâmetro a partir da caixa de texto txtCriterio:

SqlDataSource1.FilterParameters.Add(New ControlParameter(ddlCampo.SelectedValue, "txtCriterio", "Text"))

Pegue o projeto completo aqui: Filtrar_GridView.zip

Efésios 1:4 "como também nos elegeu nele antes da fundação do mundo, para sermos santos e irrepreensíveis diante dele em amor;"

Referências: