컴퓨터/DX C#

[DevExpress] GridControl 정렬 후 여러 항목의 인덱스 가져오기

dolhim 2016. 6. 9. 14:57

Get multiselect rows index after sorting GridControl with DataTable



DevExpress 의 GridControl 사용 시,


DB로부터 받은 DataTable 형식의 데이터를 DataSource 속성에 넣었다.



1
2
var table = new DataTable(); // from DB
this.gridControl1.DataSource = table;
cs


그러면 자동으로 컬럼이 입력된다.




여기서, 선택된 Row의 Index를 가져오려면 두가지 속성을 사용할 수 있다.



출처 : DevExpress Identifying Rows and Cards



위 이미지와 같이 그냥 GetSelectedRows() 로 가져오는 것과, RowHandle로 가져오는 방법이 있다.



그런데, GridControl의 컬럼을 클릭하여 정렬했을 때, 그냥 index를 가져오면 컬럼이 맞지 않게된다. 




아래와 같이, GetDataSourceRowIndex 메소드를 사용하여 index를 변환해주어야 한다.



1
2
3
4
// Visible Index
var visibleIndex = this.gridView1.GetSelectedRows().toList();
// DataSource Index
var dataSourceIndex = gridView1.GetDataSourceRowIndex(visibleIndex);
cs


dataSourceIndex를 보면 정렬하기 전, 초기의 Index 값이 들어있는것을 확인할 수 있을 것이다.



참고 : DevExpress ColumnView.GetDataSourceRowIndex Method