데이터 보기 수정
DataView를 사용하여 원본 테이블의 데이터 행을 추가, 삭제 또는 수정할 수 있습니다. DataView를 사용하여 원본 테이블의 데이터를 수정하는 기능은 DataView의 세 가지 부울 속성 중 하나를 설정하여 제어할 수 있습니다. 이러한 속성에는 AllowNew, AllowEdit 및 AllowDelete가 있습니다. 이들 속성은 기본적으로 true로 설정되어 있습니다.
AllowNew가 true인 경우 DataView의 AddNew 메서드를 사용하여 새 DataRowView를 만들 수 있습니다. DataRowView의 EndEdit 메서드를 호출할 때까지는 원본 DataTable에 새 행이 실제로 추가되지 않습니다. DataRowView의 CancelEdit 메서드를 호출하면 새 행이 삭제됩니다. 또한 한 번에 하나의 DataRowView만 편집할 수 있습니다. 보류된 행이 있는데도 DataRowView의 AddNew 또는 BeginEdit 메서드를 호출하면 보류된 행에 대해 EndEdit이 암시적으로 호출됩니다. EndEdit을 호출하면 변경 내용이 원본 DataTable에 적용되며, 나중에 DataTable, DataSet 또는 DataRow 개체의 AcceptChanges 또는 RejectChanges 메서드를 사용하여 커밋하거나 거부할 수 있습니다. AllowNew가 false인 경우 DataRowView의 AddNew 메서드를 호출하면 예외가 throw됩니다.
AllowEdit이 true인 경우 DataRowView를 통해 DataRow의 내용을 수정할 수 있습니다. DataRowView.EndEdit을 사용하여 원본 행의 변경 내용을 확정하거나 DataRowView.CancelEdit을 사용하여 변경 내용을 거부할 수 있습니다. 행은 한 번에 하나씩만 편집할 수 있습니다. 보류된 행이 있는데도 DataRowView의 AddNew 또는 BeginEdit 메서드를 호출하면 보류된 행에 대해 EndEdit이 암시적으로 호출됩니다. EndEdit을 호출하면 제안된 변경 내용은 원본 DataRow의 Current 행 버전에 놓이게 되며, 나중에 DataTable, DataSet 또는 DataRow 개체의 AcceptChanges 또는 RejectChanges 메서드를 사용하여 커밋하거나 거부할 수 있습니다. AllowEdit이 false이면 DataView에서 값을 수정하려고 할 때 예외가 throw됩니다.
기존 DataRowView를 편집하려고 하면 제안된 변경 내용에서 원본 DataTable의 이벤트가 발생합니다. 원본 DataRow에 대해 EndEdit 또는 CancelEdit을 호출하면 DataRowView에 대해 EndEdit 또는 CancelEdit이 호출되었는지 여부와 상관없이 보류된 변경 내용이 적용되거나 취소됩니다.
AllowDelete가 true인 경우 DataView 또는 DataRowView 개체의 Delete 메서드를 사용하여 DataView에서 행을 삭제할 수 있으며, 해당 행은 원본 DataTable에서 삭제됩니다. AcceptChanges 또는 RejectChanges를 각각 사용하여 삭제 내용을 나중에 커밋하거나 거부할 수 있습니다. AllowDelete가 false인 경우 DataView 또는 DataRowView의 Delete 메서드를 호출하면 예외가 throw됩니다.
다음 코드 예제에서는 DataView를 사용하여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();