Изменение объектов DataView
Объект DataView можно использовать, чтобы добавлять, удалять или изменять строки данных в базовой таблице. Возможность использования DataView для изменения данных в базовой таблице контролируется путем задания одного из трех логических свойств DataView. А именно: AllowNew, AllowEdit и AllowDelete. По умолчанию они имеют значение true .
Если AllowNew имеет значение true, можно использовать AddNew метод DataView для создания нового DataRowViewобъекта. Обратите внимание, что новая строка фактически не добавляется в базовую DataTable , пока EndEdit метод DataRowView не вызывается. CancelEdit Если вызывается метод DataRowView, новая строка отключена карта. Обратите внимание, что одновременно можно изменять только один Объект DataRowView . При вызове метода AddNew или BeginEdit объекта DataRowView во время существования ожидающей строки EndEdit неявно вызывается в ожидающей строке. При вызове EndEdit изменения применяются к базовому объекту DataTable и позже могут быть зафиксированы или отклонены с помощью методов AcceptChanges или RejectChanges объекта DataTable, DataSet или DataRow. Если AllowNew имеет значение false, при вызове метода AddNew объекта DataRowView возникает исключение.
Если allowEdit имеет значение true, можно изменить содержимое dataRow с помощью DataRowView. Вы можете подтвердить изменения базовой строки с помощью DataRowView.EndEdit или отклонить изменения с помощью DataRowView.CancelEdit. Отметим, что одновременно можно изменять только одну строку. При вызове методов AddNew или BeginEdit объекта DataRowView во время существования ожидающей строки EndEdit неявно вызывается в ожидающей строке. При вызове EndEdit предлагаемые изменения помещаются в текущую версию строки базового объекта DataRow и могут быть зафиксированы или отклонены с помощью методов AcceptChanges или RejectChanges объекта DataTable, DataSet или DataRow. Если AllowEdit имеет значение false, исключение создается при попытке изменить значение в DataView.
При изменении существующего объекта DataRowView события базовой таблицы DataTable по-прежнему будут возникать с предлагаемыми изменениями. Обратите внимание, что при вызове EndEdit или CancelEdit в базовом dataRow ожидающие изменения будут применены или отменены независимо от того, вызывается ли EndEdit или CancelEdit в DataRowView.
Если AllowDelete имеет значение true, можно удалить строки из DataView с помощью метода Delete объекта DataView или DataRowView, а строки удаляются из базовой таблицы DataTable. Позже можно зафиксировать или отклонить удаления с помощью AcceptChanges или RejectChanges соответственно. Если AllowDelete имеет значение false, исключение создается при вызове метода 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();