Voltando exatamente da onde paramos, salve o projeto, aperte F5, clique em OK para permitir a compilação e note que os dados dos GridViews são diferentes:


Perceba que no primeiro GridView só são retornados os produtos com a Categoria Condiments e no segundo somente os que tem mais de100 Unidades no Estoque, exatamente como fizemos em nosso filtro.

Assim percebemos que em um mesmo DataTable podemos usar vários DataViews diferentes.

Agora vamos fazer outro exemplo usando datas.

Volte ao DataSet, abra o Server Explorer, expanda a aba Tables e arraste pra ele a tabela Orders. Clique com o botão direito nela e configure a consulta para que retorne menos campos, para que em nossa consulta retornemos as seguintes colunas:


Agora crie uma nova página, pode deixar como Default2.aspx mesmo.

Nela, arraste da ToolBox um TextBox com a propriedade TextMode setada como Multiline, um Button e um GridView, para que os mesmos fiquem da seguinte forma:


Usei os seguintes ID’s: txtFiltro, btnFiltrar e dgvResultado. Assim no TextBox iremos digitar a condição do filtro de nosso DataView.

Agora vá à página de códigos e copie o método criado na Default.aspx para nossa página, fazendo poucas alterações:

private void PopulaGridResultado()

    {

        try

        {

            //Instancio o TableAdapter e o DataTable da minha tabela Orders

            OrdersTableAdapter ta = new OrdersTableAdapter();

            dsDados.OrdersDataTable dt = new dsDados.OrdersDataTable();

 

            //Preencho meu TableAdapter passando como parâmetro o DataTable instanciado

            ta.Fill(dt);

 

            //Instancio meu objeto DataView, que recebe meu DataTable com o método DefaultView

            DataView dvUm = dt.DefaultView;

            //Uso a propriedade RowFilter, que recebe o valor que será digitado em minha TextBox

            dvUm.RowFilter = txtFiltro.Text;

 

            //O DataSource do meu GridView recebe o DataView com o método ToTable, finalizo com o DataBind

            dgvResultado.DataSource = dvUm.ToTable();

            dgvResultado.DataBind();

        }

        catch (Exception ex)

        {

            throw new Exception(ex.Message);

        }

    }

Perceba que foram alterados poucos detalhes em relação ao método da outra página. Não se esqueça de declarar o namespace System.Data e chamar o TableAdapter do DataSet.

Volte ao modo Design, dê dois cliques no btnFiltrar e chame o método recém-criado no evento Click deste botão:

protected void btnFiltrar_Click(object sender, EventArgs e)

    {

        PopulaGridResultado();

    }

Abra a Solution Explorer, clique com o botão direito nessa página e clique em Set As Start Page, para definirmos ela como a página inicial no momento em que compilarmos a aplicação.

Salve o projeto e compile.

Se deixarmos em branco o TextBox e clicarmos no botão Filtrar ele nos retornará todos os dados:


Para filtrarmos dos ID’s 10250 a 10254, por exemplo, usamos a cláusula IN:


Para filtrarmos apenas os produtos que tem como cidade São Paulo, por exemplo, usamos esta instrução:


Já para filtrarmos por data, por exemplo, use a seguinte instrução:


Lembrando que usei o tipo de data deste banco, que é americano: ano/mês/dia.

Percebam que temos inúmeras formas de filtrar os dados usando DataView!

OBS: Não é permitido o uso da cláusula BETWEEN em filtros DataView, mais podemos usar outros como o IN, que foi usado acima.

Assim finalizo o artigo.

Para quem se interessar, disponibilizo o código fonte desse projeto aqui.

Quaisquer dúvidas mandem emails para wellingtonbalbo@gmail.com ou deixem nos comentários deste artigo que responderei o mais breve possível.

 Até o próximo artigo!