Devexpress gridcontrol复选框

时间:2013-10-14 10:57:06

标签: c# winforms checkbox devexpress gridcontrol

您好我的gridcontrol中的复选框有问题(winforms dexexpress)。我有三个列'Check','Name','Descr'。用户可以在collumn上应用排序,例如'Name',然后在某行上检查复选框('Check')。我想在单击行上的复选框后获取检查项目。但我得到错误的行索引(它是默认排序的索引)。应用排序后获得正确索引的任何想法?问题是在其他collumn排序后选择不同的复选框。 我读到了这个http://documentation.devexpress.com/#WindowsForms/CustomDocument2531,但它对我没有帮助,真的不知道该怎么做

    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(表示表的索引)是在用另一个旧列进行排序之后。 CheckColumn是带有复选框的列,不按另一列进行排序。

1 个答案:

答案 0 :(得分:3)

这是正确的代码:

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

行句柄获取包含已处理单元格的行的句柄(不是索引)。 行句柄定义行在视图中的显示顺序。 此订单会考虑应用于视图的任何排序和过滤设置。

相关的帮助文章:Identifying Rows and Cards