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- 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.)
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 Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter
 
Referências: