Share via


Modificar DataViews

Você pode usar o DataView para adicionar, excluir ou modificar linhas de dados na tabela subjacente. A capacidade de usar o DataView para modificar dados na tabela subjacente é controlada pela configuração de uma das três propriedades boolianas doDataView. Essas propriedades são AllowNew, AllowEdit e AllowDelete. Eles são definidos como true por padrão.

Se AllowNew for true, você poderá usar o método AddNew do DataView para criar um novo DataRowView. Observe que uma nova linha não é realmente adicionada ao DataTable subjacente até que o método EndEdit do DataRowView seja chamado. Se o método CancelEdit do DataRowView for chamado, a nova linha será descartada. Também observe que você pode editar somente um DataRowView por vez. Se você chamar o método AddNew ou BeginEdit do DataRowView enquanto uma linha pendente existir, o EndEdit será implicitamente chamado na linha pendente. Quando o EndEdit é chamado, as alterações são aplicadas ao DataTable subjacente e podem ser confirmadas ou rejeitadas posteriormente usando os métodos AcceptChanges ou RejectChanges do objeto DataTable, DataSet ou DataRow. Se o AllowNew for false, uma exceção será gerada se você chamar o método AddNew do DataRowView.

Se o AllowEdit for true, você poderá modificar o conteúdo de um DataRow por meio do DataRowView. Você pode confirmar as alterações na linha subjacente usando o DataRowView.EndEdit ou rejeitar as alterações usando o DataRowView.CancelEdit. Observe que somente uma linha pode ser editada por vez. Se você chamar os métodos AddNew ou BeginEdit do DataRowView enquanto uma linha pendente existir, o EndEdit será implicitamente chamado na linha pendente. Quando oEndEdit é chamado, as alterações propostas são posicionadas na versão de linha Current do DataRow e podem posteriormente ser confirmadas ou rejeitadas usando os métodos AcceptChanges ou RejectChanges do objeto DataTable, DataSet ou DataRow. Se o AllowEdit for false, uma exceção será gerada se você tentar modificar um valor no DataView.

Quando um DataRowView existente estiver sendo editado, os eventos do DataTable subjacente ainda serão gerados com as alterações propostas. Observe que, se você chamar o EndEdit ou CancelEdit no DataRow subjacente, as alterações pendentes serão aplicadas ou canceladas, independentemente de o EndEdit ou CancelEdit ser chamado no DataRowView.

Se o AllowDelete for true, você poderá excluir linhas do DataView usando o método Delete do objeto DataView ou DataRowView e as linhas serão excluídas do DataTable subjacente. Posteriormente, você pode confirmar ou rejeitar as exclusões usando o AcceptChanges ou RejectChanges, respectivamente. Se o AllowDelete for false, uma exceção será gerada se você chamar o método Delete do DataView ou DataRowView.

O exemplo de código a seguir desabilita o uso do DataView para excluir linhas e adiciona uma nova linha à tabela subjacente usando o DataView.

Dim custTable As DataTable = custDS.Tables("Customers")  
Dim custView As DataView = custTable.DefaultView  
custView.Sort = "CompanyName"  
  
custView.AllowDelete = False  
  
Dim newDRV As DataRowView = custView.AddNew()  
newDRV("CustomerID") = "ABCDE"  
newDRV("CompanyName") = "ABC Products"  
newDRV.EndEdit()  
DataTable custTable = custDS.Tables["Customers"];  
DataView custView = custTable.DefaultView;  
custView.Sort = "CompanyName";  
  
custView.AllowDelete = false;  
  
DataRowView newDRV = custView.AddNew();  
newDRV["CustomerID"] = "ABCDE";  
newDRV["CompanyName"] = "ABC Products";  
newDRV.EndEdit();  

Confira também