ADO.NET - Uma visão geral III : O objeto  DataView 

 

Continuando o artigo - ADO.NET - Uma visão geral II :  O objeto DataTable - agora é a vez de falar do objeto DataView. O DataView tem a função de permitir a ligação dos dados de uma fonte de dados com a interface do usuário através do DataBinding . Através do DataView podemos filtrar , ordernar , pesquisar e navegar pelos dados oferecendo diversas visões de um mesmo conjunto de dados ao usuário.

 

Usamos o DataView para mostrar uma visão dos dados contidos em um DataTable , com isto você pode ter vários DataViews ligados a um mesmo DataTable , sendo que cada um exibe um visão diferente dos dados. O objeto DataTable possui um DataView padrão que é acessado através da propriedade DefaultView.

 

As principais propriedades do objeto DataView são :

Vimos então que um DataView permite a você criar diferentes visões dos dados armazenados em um objeto DataTable . Geralmente usamos estas caracteristicas em aplicações com controles vinculados (DataBinding). Um DataView oferece uma visão dinâmica dos dados cujo conteúdo , ordem e membership  refletem as mudanças ocorridas no objeto DataTable relacionado a medida que ocorrem. Isto é não é o mesmo que usar o método Select do objeto DataTable que retorna um vetor DataRow da tabela para um filtro ou ordenação particular que refletem as mudanças na tabela relacionada mas cuja ordenação e o membership permanecem estáticos. Tudo isto faz com que o DataView seja ideal para ser usado em aplicações com DataBindind.

Apesar disto o DataView não pode ser tratado como uma tabela nem pode fornecer uma visão de junções de tabelas , e você não pode excluir colunas que existem na tabela fonte , nem pode anexar colunas a tabela fonte.

Criando um DataView

Existem duas maneiras de você criar um DataView :

  1. Usando o construtor DataView.
  2. Criar uma referência para a propriedade DefaultView de um objeto DataTable . (Se você usar o construtor DataView sem argumentos você não poderá usar o DataView até que tenha definido a propriedade Table.)

1- Abaixo temos um trecho de código que mostra como criar um DataView usando o construtor .

Dim custDV As DataView = New DataView(custDS.Tables("Customers"), "Country = 'USA'", "ContactName",                                 DataViewRowState.CurrentRows)
 

2- A seguir um exemplo que demonstrar como obter uma referência para o DataView padrão do DataTable usando a propriedade DefaultView.

Dim custDV As DataView = custDS.Tables("Customers").DefaultView

Nota:
Embora um DataView seja por padrão uma visão de somente leitura dos dados , você pode usar um DataView para incluir, excluir ou modificar linhas de dados na tabela relacionada.  Para fazer permitir isto basta definir como True as propriedades : AllowNew , AllowEdit e AllowDelete.

Se AllowNew for definido como True você pode usar o método AddNew do DataView para criar uma nova DataRowView , quando o método EndEdit do DataRowView for chamado a nova linha será incluida na tabela relacionada.

Se o método CancelEdit for invocado a nova linha será descartada. Quando o método EndEdit for invocado as alterações são aplicadas a tabela relacionada e podem ser mais tarde confirmadas ou rejeitada pelos métodos : AccepChanges ou RejectChanges.

 

Agora vamos mostrar um exemplo usando DataView para filtrar e ordenar os dados de um tabela exibidos em um controle DataGrid.

 

Vou usar o exemplo do artigo - Alimentando um DataSet com dados de múltiplas tabelas - e incluir a funcionalidade do DataView para filtrar e ordenar os dados exibidos no DataBrid.

1 - Abra o projeto MultiplasTabelas no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)

  1. Project Types : Visual Basic Projects
  2. Templates : Windows Application
  3. Name : MultiplasTabelas
  4. Location : c:\vbnet\MultiplasTabelas

2- No formulário padrão insira dois componentes DataGrid - DataGrid1 e DataGrid2  e dois botões de comando - Button1 e Button2  conforme layout abaixo. Inclua também mais dois botões de comando que irão conter o código associado ao DataView. Conforme o layout abaixo:

 

O código que cria uma conexão com as tabelas Authors e Titles do banco de dados , cria o DataSet e exibe os dados no DataGrid é o seguinte:

 

1- define as variáveis objeto:

 

 

2 - Código que preenche o DataGrid2:

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 DataGrid1.CaptionText = "Autores"

 da1.Fill(ds, "Autores")

 DataGrid1.DataSource = ds

 DataGrid1.DataMember = "Autores"

End Sub

 

3- Código que preenche o DataGrid2:

 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

 DataGrid2.CaptionText = "Titulos"

 da2.Fill(ds, "Titulos")

 DataGrid2.DataSource = ds

 DataGrid2.DataMember = "Titulos"

End Sub

 

Agora vamos mostrar o código relacionado com o DataView. No evento Click do botão - Filtrar dados - temos o código :

 

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

   da1.Fill(ds, "Autores1")

     Dim dv As New DataView(ds.Tables("Autores"))

  

   dv.RowFilter = "Au_ID <= 15"

   DataGrid1.DataSource = dv

End Sub

 

Este código irá filtrar os dados e exibir somente os autores cuja coluna Au_ID for menor que 15 ( dv.RowFilter = "Au_ID <= 15" ). Criamos o DataView e associamos o mesmo ao DataGrid1.

 

O código relacionado ao botão - Ordernar - é o seguinte :

 

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

  da2.Fill(ds, "Titulos1")

  Dim dv As New DataView(ds.Tables("titulos"))

  dv.Sort = "Title"

  DataGrid2.DataSource = dv

End Sub

 

Executando o projeto e clicando nos botões temos o resultado como abaixo:

 


Temos dois exemplos básicos usando
DataView a partir de um DataSet . Uma filtragem e uma ordenação. Existem muito mais possibilidades que com certeza iremos abordar em outro artigo sobre o DataView.


Leia a continuação deste artigo em :
ADO.NET - Uma visão geral IV : O objeto  DataSet...

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti