2013-10-14 2 views
0

Привет, у меня проблема с флажком в gridcontrol (winforms dexexpress). У меня есть три столбца «Проверить», «Имя», «Descr». Пользователь может применить сортировку по столбцу, например «Имя», а затем он установил флажок («Проверить») в некоторой строке. Я хочу получить отмеченный элемент после того, как я установил флажок в строке. Но я получаю неправильный индекс строки (это индекс с сортировкой по умолчанию). Любые идеи для получения правильного индекса после применения сортировки? Параметр «Другая проблема» выбирается после другой сортировки столбцов. Я читал об этом http://documentation.devexpress.com/#WindowsForms/CustomDocument2531, но это не помогает мне, на самом деле не знаю, как это сделатьDevexpress gridcontrol checkbox

private void gridViewT_CellValueChanging(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) 
{ 
    if (e.Column.Name == "CheckColumn" && e.RowHandle > -1) 
    { 
     if (e.Value != null && (bool)e.Value) { 
      DataRow dr = ((DataTable)gridControlT.DataSource).Rows[e.RowHandle]; 
      DoSomeThing(dr); 
     } 
    } 
} 

Так e.RowHandle (что означает индекс к таблице) после сортировки по другой collumn старой. CheckColumn, который является столбцом с флажками, не сортируется другой колонкой.

+0

Это не совсем понятно, что вы имеете в виду «я получаю неправильный индекс строки»? Отправьте свой код и опишите поведение, которое вы ожидали. – DmitryG

+0

bump, добавленный код – Cospel

ответ

3

Вот правильный код:

//DataRow dr = ((DataTable)gridControlT.DataSource).Rows[e.RowHandle]; 
DataRow dr = ((GridView)sender).GetDataRow(e.RowHandle); 

Ряд ручка получает рычаг управления (не индекс) в строке, содержащей обработанное ячейку. Ручки Row определяют порядок отображения строк в представлении. В этом заказе учитываются любые параметры сортировки и фильтрации, применяемые к представлению.

Связанные помощь-статья: Identifying Rows and Cards

+0

+1 Я собирался опубликовать то же самое, вы только что сделали :) Полагаю, иногда 'GetDataRow' возвращает' DataRowView', не так ли? –

+0

Woho, Спасибо, человек! – Cospel

+0

@SriramSakthivel Я считаю, что это верно для метода ColumnView.GetRow и false для метода ColumnView.GetDataRow. Из [документации] (http://documentation.devexpress.com/#WindowsForms/DevExpressXtraGridViewsBaseColumnView_GetRowtopic): если источником данных является System.Data.DataTable или System.Data.DataView, этот метод возвращает объект System.Data.DataRowView , Если источником данных является пользовательский список элементов, возвращается соответствующий элемент списка. – DmitryG

Смежные вопросы