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 Twitter
Referências: