Compartilhar 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 definindo uma das três propriedades Booleanas do DataView. Essas propriedades são AllowNew, AllowEdit e AllowDelete. Eles são definidos como true por padrão.

Se AllowNew for true, você pode usar o AddNew método do DataView para criar um novo DataRowView. Observe que uma nova linha não é realmente adicionada ao subjacente DataTable até que o EndEdit método do DataRowView seja chamado. Se o método CancelEdit do DataRowView for chamado, a nova linha será descartada. Observe também que você pode editar apenas um DataRowView de cada vez. Se você chamar o método AddNew ou o método BeginEdit do DataRowView enquanto uma linha pendente existir, EndEdit será implicitamente chamado na linha pendente. Quando 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 AllowNew for false, uma exceção será gerada se você chamar o método AddNew de DataRowView.

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

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

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

O exemplo de código a seguir desabilita o uso das DataView linhas para excluir 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();

Consulte também