Поделиться через


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

Можно использовать 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();  

См. также