Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

DataView: Filtrando Dados - Parte 1

Veja neste artigo como filtrar dados usando o DataView.

Olá pessoal, neste artigo irei mostrar como filtrar dados usando o objeto DataView. Acompanhem:

Para quem não sabe, o DataView é um objeto do ADO.NET que nos permite filtrar, ordenar, pesquisar e navegar pelos dados oferecendo diversos tipos de visões de um mesmo conjunto de dados ao usuário. Usamos um (ou mais) DataView para filtrar os dados contidos em um DataTable.

PS: Para mais informações sobre o DataList, recomendo a leitura deste link.

Para este artigo, usei o banco de exemplo da Microsoft, Northwind. Para quem quiser baixá-lo, é só seguir as instruções neste link ou neste artigo.

Como dito anteriormente, posso ter N DataViews para um mesmo DataTable.

Abra o Visual Studio, vá em File > New WebSite (SHIFT + ALT + N), dê o nome FiltrandoDadosDataView e clique em OK. Neste exemplo usaremos um DataSet Tipado.

Então, no Solution Explorer (CTRL + W + S) adicione um DataSet e dê o nome a ele de dsDados.xsd. Clique em OK e em Sim para armazenar este DataSet na pasta App_Code.


Agora abra o Server Explorer (CTRL + W + L), abra o banco NorthWind, abra a aba Views e arraste a View Products By Category, como a imagem abaixo ilustra, para o DataSet:


OBS: Para saber mais sobre Views, recomendo a leitura deste artigo.

Clique com o botão direito nesta View que foi arrastada e clique em Configure, altere a instrução para que não nos retorne a coluna Discontinued, já que não vamos usá-la neste exemplo:


Como você pode ver abaixo retornaremos o nome da categoria, do produto, a quantidade por unidade e as unidades em estoque.


Agora vá a Default.aspx, arraste da ToolBox dois GridViews, dê o ID a eles de dgvUm e dgvDois e altere a formatação de ambos:


Diferenciei o layout dos Grids porque iremos popular o primeiro grid com os dados de uma categoria e o segundo com os dados de outra categoria.

Para fazer isso, vá à página de códigos desta página para criar o método abaixo:

Antes, adicione os namespaces e a chamada ao TableAdapter do DataSet:

using System.Data;

using dsDadosTableAdapters;

Agora sim, crie o seguinte método:

private void PopulaGrids()

    {

        try

        {

            //Instancio o TableAdapter e o DataTable da minha View

            Products_by_CategoryTableAdapter ta = new Products_by_CategoryTableAdapter();

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

 

            //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 é o filtro de meu DataView (equivalente ao Where do SQL Server)

            dvUm.RowFilter = "CategoryName = 'Condiments'";

           

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

            dgvUm.DataSource = dvUm.ToTable();

            dgvUm.DataBind();

 

            //Faço o mesmo com o 2º GridView, a diferença é que agora uso outro filtro

 

            DataView dvDois = dt.DefaultView;

            dvUm.RowFilter = "UnitsInStock > 100";

 

            dgvDois.DataSource = dvDois.ToTable();

            dgvDois.DataBind();

        }

        catch (Exception ex)

        {

            throw new Exception(ex.Message);

        }

    }

Os comentários acima já explicam o que faz o método, mais é importante citar a propriedade RowFilter, que é o filtro que quero usar em meu GridView e o método ToTable, que retorna um DataTable, sendo assim excelente para ser usado como DataSource do GridView.

No Page_Load faça a verificação: se não for PostBack (para que o Grid não seja populado toda hora) faça a chamada ao método recém-criado:

protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            PopulaGrids();

        }

    }

Na próxima parte de nosso artigo veremos a conclusão deste exemplo, criaremos ainda outra página com mais exemplos usando diversos tipos de filtros.

Não perca!





    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Autor
Wellington Balbo De Camargo

Tecnólogo em Análise de Sistemas, atua na área de Desenvolvimento .NET com aplicações Web a 2 anos, onde trabalha atualmente com a linguagem C# usando a tecnologia ASP.NET, no desenvolvimento em camadas usando o banco de dados SQL Server. Procura estudar cada vez mais para melhorar os conheciment...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação DevMedia).


  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03