반응형
Grid에서 특정 row를 선택하여 해당 row와 관련된 modeless 창을 띄우고 작업을 하는 도중,
원래 Form에서 Grid가 정렬되어 기존 row의 handle이 변경되었을 경우 단순히 FocusedRowHandle을 보관 했다가
찾아가는 방식은 사용할 수 없다(그리드 내에서 위치가 변경 되었으므로).
이때는 다음과 같이 DataSourceRowIndex를 보관 했다가, 해당 값으로 현재의 FocusedRowHandle 값을 찾아가야 한다.
DataSourceRowIndex는 DataSource내의 고유한 index이기 때문에 GridView에서 보여지는 형태와 관계없이 일정하게 유지 되므로 이 값을 가진 RowHandle을 찾아내는 방식이다.
// modeless 창을 띄우기 전에 현재 선택된 row의 DataSourceRowIndex를 보관
var rowIndex = gView1.GetFocusedDataSourceRowIndex();
.....
/*
modeless 창을 띄우고 작업하는 도중, Grid가 정렬 되었다고 가정
*/
....
// modeless 창이 닫히고, 다시 원래의 FocusedRowHandle를 찾아가게 한다.
var rowHandle = GetRowHandleFromRowIndex(gView1, rowIndex);
gView1.FocusedRowHandle = rowHandle;
// DataSourceRowIndex를 가진 행을 찾아서 RowHandle 값으로 되돌린다.
private int GetRowHandleFromRowIndex(GridView gridView, int rowIndex) {
int result = -1;
for (int i = 0; i < gridView.DataRowCount; i++) {
if (gridView.GetDataSourceRowIndex(i) == rowIndex) {
result = i;
break;
}
}
return result;
}
반응형
'개발정보' 카테고리의 다른 글
[javascript] Closure(클로저)란 (0) | 2023.01.31 |
---|---|
[javascript] Array.prototype.find() 메소드 (0) | 2023.01.28 |
[c#] DevExpress DropDownButton 사용법 (0) | 2021.12.21 |
[C#] 인터페이스 다중 상속 시 동일한 메소드명 처리 (0) | 2021.07.02 |
[Electron] Electron으로 Hello World 개발 (0) | 2021.05.01 |