Modificando 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, AllowEdite 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 CancelEdit método 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 BeginEdit do DataRowView enquanto existir uma linha pendente, EndEdit será chamado implicitamente 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á lançada se você chamar o método AddNew do DataRowView.
Se AllowEdit for true, você pode modificar o conteúdo de um DataRow por meio do DataRowView. Você pode confirmar as alterações na linha subjacente usando DataRowView.EndEdit ou rejeitar as alterações usando DataRowView.CancelEdit. Observe que apenas uma linha pode ser editada de cada vez. Se você chamar os métodos AddNew ou BeginEdit do DataRowView enquanto existir uma linha pendente, EndEdit será implicitamente chamado na linha pendente. Quando EndEdit é chamado, as alterações propostas são colocadas na versão da linha Current do DataRow subjacente e podem ser confirmadas ou rejeitadas posteriormente usando os métodos AcceptChanges ou RejectChanges do objeto DataTable, DataSet ou DataRow. Se AllowEdit for false, uma exceção será lançada se você tentar modificar um valor no DataView.
Quando um DataRowView existente está sendo editado, os eventos do DataTable subjacente ainda serão 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 do DataView usando o método Delete do objeto DataView ou DataRowView, e as linhas serão excluídas do DataTable subjacente. Mais tarde, você pode confirmar ou rejeitar as exclusões usando AcceptChanges ou RejectChanges respectivamente. Se AllowDelete for false, uma exceção será lançada 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();