2
현재 XtraGrid를 사용 중입니다. gridControl을 DataTable에 바인딩했습니다. DataTable에서 행을 삭제하면 XtraGrid가 변경 내용을 표시합니다. 그러나 행 인덱스를 다루기 시작하면 이상한 행동을합니다.행 삭제 후 XtraGrid 행 인덱스 불일치
이것은 (대략) 행을 삭제하는 데 사용하는 코드입니다.
DataTable dtWorkItems;
...
gridWorkItemList.DataSource = dtWorkItems;
...
int currRowHandle = gridViewWorkItemList.FocusedRowHandle;
int currRowIndex = gridViewWorkItemList.GetDataSourceRowIndex(currRowHandle);
DataRow theRow = gridViewWorkItemList.GetDataRow(currRowHandle);
theRow.Delete();
그러나이 테스트 이후 실패 사실
int rowHandle = gridViewWorkItemList.FocusedRowHandle;
int rowIndex = gridViewWorkItemList.GetDataSourceRowIndex(rowHandle);
DataRow dr1 = gridViewWorkItemList.GetDataRow(rowHandle);
DataRow dr2 = dtWorkItems.Rows[rowIndex];
if (dr1 != dr2)
; // Failure
는 DR2는 "삭제"의 상태를 가지고있다.
dtWorkItems에서 AcceptChanges()를 수행하면 테스트가 통과합니다. 그러나 나는 그렇게하지 않을 것입니다.
행 색인이 다시 일치하기 시작하도록하기 위해해야 할 일이 있습니까?
나중에 GetChanges()를 호출하기 원하기 때문에 AcceptChanges()를 사용하고 싶지 않습니다. –
'gridViewWorkItemList.RefreshData()'를 호출해도 행 인덱스가 다시 동기화되지 않습니다. –