2011-09-21 4 views
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()를 수행하면 테스트가 통과합니다. 그러나 나는 그렇게하지 않을 것입니다.

행 색인이 다시 일치하기 시작하도록하기 위해해야 ​​할 일이 있습니까?

답변

0

데이터 소스 (dtWorkItems)에서 삭제 한 다음 그리드가 자동으로 업데이트되지 않으면 그리드를 새로 고쳐야합니다. 그리드는 dtWorkItems의보기 일뿐입니다. 어쩌면 당신은 이미 Acceptchanges로 일을하고 있습니다. 왜 당신이 변경 한 것을 수락하고 싶지 않으십니까?

+0

나중에 GetChanges()를 호출하기 원하기 때문에 AcceptChanges()를 사용하고 싶지 않습니다. –

+0

'gridViewWorkItemList.RefreshData()'를 호출해도 행 인덱스가 다시 동기화되지 않습니다. –