Изменение представлений данных

Можно использовать DataView для добавления, удаления или изменения строк данных в базовой таблице. Возможность использовать DataView для изменения данных в базовой таблице управляется путем задания одного из трех булевых свойств DataView. А именно: AllowNew, AllowEdit и AllowDelete. Они заданы true по умолчанию.

Если AllowNew равно true, можно использовать метод AddNew класса DataView для создания нового DataRowView. Обратите внимание, что новая строка фактически не добавляется в базовый объект до вызова метода объекта . CancelEdit Если метод DataRowView вызывается, новая строка удаляется. Обратите внимание, что можно изменять только один элемент DataRowView одновременно. При вызове метода AddNew или BeginEdit у DataRowView, когда существует ожидающая строка, EndEdit неявно вызывается для ожидающей строки. Когда вызывается EndEdit, изменения применяются к базовому объекту DataTable и могут быть зафиксированы или отклонены с помощью методов AcceptChanges или RejectChanges объекта DataTable, DataSet или DataRow. Если AllowNewfalse, будет выброшено исключение при вызове метода AddNewDataRowView.

Если AllowEdit задано значение true, можно изменить содержимое DataRow объекта с помощью DataRowView. Вы можете подтвердить изменения базовой строки с помощью DataRowView.EndEdit или отклонить изменения с помощью DataRowView.CancelEdit. Обратите внимание, что одновременно можно изменять только одну строку. Если вы вызываете методы AddNew или BeginEdit объекта DataRowView при наличии ожидающей строки, EndEdit неявно вызывается для этой ожидающей строки. При вызове EndEdit предлагаемые изменения помещаются в версию строки Current базового объекта DataRow, и позднее могут быть зафиксированы или отклонены с помощью методов AcceptChanges или RejectChanges объекта DataTable, DataSet или DataRow. Если AllowEditfalse, исключение выбрасывается при попытке изменить значение в DataView.

При изменении существующего DataRowView события базовой DataTable базы по-прежнему будут вызваны предлагаемыми изменениями. Обратите внимание, что если вы вызываете EndEdit или CancelEdit на базовом DataRow, ожидающие изменения будут применены или отменены независимо от того, вызывается ли EndEdit или CancelEdit на DataRowView.

Если AllowDelete задано значение true, можно удалить строки из DataView таблицы с помощью Delete метода DataView или DataRowView объекта, а строки удаляются из базовой таблицы DataTable. Позже можно зафиксировать или отклонить удаление, используя AcceptChanges или RejectChanges соответственно. Если AllowDeleteложь, при вызове метода Delete для DataView или DataRowView возникает исключение.

Следующий пример кода отключает использование DataView для удаления строк и добавляет новую строку в базовую таблицу с помощью 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();

См. также