DataRow.Delete() 메서드를 호출하면 해당 행의 RowState 속성이 DataRowState.Deleted로 설정됩니다. 행 상태가 DataRowState.Deleted인 경우 정상적인 상황에서는 이 행에 액세스할 수 없습니다. 삭제된 원본 데이터를 검색해야 하는 경우 해당 항목 속성의 오버로드된 메서드를 사용하여 DataRowVersion.Original 매개 변수를 전달할 수 있습니다.
코드는 다음과 같습니다.
if (typedDataRow.RowState == DataRowState.Deleted) id = (string)typedDataRow["CustomerID", DataRowVersion.Original];
datatable.Rows[i].Delete()를 사용하여 행을 삭제하거나 DataGrid에서 Del 키를 눌러 행을 삭제하면 테이블에 다시 액세스할 때 메시지가 나타납니다. "행 정보에 액세스하기 위해 삭제된 행을 전달할 수 없습니다" 오류. 그 이유는 다음과 같습니다.
삭제() 후에는 삭제 완료를 확인하기 위해 datatable.AccepteChanges() 메소드가 필요합니다. 왜냐하면 삭제()는 해당 열의 상태만 삭제됨으로 표시하고 롤백도 가능하기 때문입니다. datatable.RejectChanges()를 통해 행 삭제를 취소합니다.
따라서 데이터 행을 완전히 삭제하려면 삭제() 및 AccepteChanges() 메서드를 동시에 사용해야 합니다 또는 datatable.Rows.RemoveAt(i ) 을 직접 삭제하는 메소드입니다. 여기서 i는 행 인덱스를 나타내고, 또 다른 하나는 datatable.Rows.Remove(DataRow dr)로 지정된 행을 삭제하는 것입니다.
단, datatable.Rows.RemoveAt(i)를 사용할 경우 datatable.Rows.RemoveAt(0); datatable.Rows.RemoveAt(1); 하지만 0개 행을 삭제하면 원래 1개 행이 0개 행이 되므로 datatable.Rows.RemoveAt(1)은 실제로 원본 테이블의 2개 행을 삭제합니다. 이때는 i = i - 1;
이어야 합니다. 따라서 datatable.Rows.RemoveAt(i)
를 주의해서 사용해야 합니다.
행 버전 (DataRowVersion )
행(DataRow) 개체에는 현재, 원본, 제안 및 기본값의 네 가지 행 버전이 있습니다. 이러한 행 버전에 대한 간략한 설명은 다음과 같습니다.
현재: 행의 현재 값을 나타냅니다. 삭제된 상태의 행에 대한 행 버전이 존재하지 않습니다.
원본: 행의 원래 값을 나타냅니다. Added 상태의 행 버전이 존재하지 않습니다.
제안: 행의 권장 값을 나타냅니다. 이 행 버전은 테이블에 속하지 않는 행, 즉 분리됨 상태의 행에 대해 존재합니다. 이 행 버전은 편집 중인 행에도 존재합니다.
기본값: 행의 기본 버전을 나타냅니다. 추가됨, 수정됨 또는 변경되지 않음 상태의 행에 대한 기본 행 버전은 현재이고, 삭제된 상태에 있는 행의 경우 기본 행 버전은 원본입니다. 분리됨 상태의 행에 대한 기본 버전이 제안됩니다.
위 내용은 C# Table.Rows[index].Delete() 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!