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!

Artigos relacionados