You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SfDataGrid的CellLongPress事件中获取列索引或MappingName?

解决SfDataGrid长按特定列时获取列索引或MappingName的问题

你报错的核心原因是e.RowColumnIndex是一个包含RowIndex和ColumnIndex的结构体,不能直接与整数做比较,必须访问其内部的ColumnIndex属性。以下是两种可行的解决方式:

获取列索引的正确写法

直接通过RowColumnIndex.ColumnIndex获取列的显示索引,修改后台代码如下:

private void PasswdVw_CellLongPress(object sender, DataGridCellLongPressEventArgs e)
{
    // 检查是否为目标列索引(示例为3)
    if(e.RowColumnIndex.ColumnIndex != 3)
    {
       return;
    }
    
    // 执行后续业务逻辑
}

通过MappingName判断(更健壮)

如果担心后续列顺序调整导致索引失效,推荐通过列的MappingName判断,这种方式不受列排序、位置变动影响:

private void PasswdVw_CellLongPress(object sender, DataGridCellLongPressEventArgs e)
{
    // 获取当前点击的列对象
    var targetColumn = PasswdVw.Columns[e.RowColumnIndex.ColumnIndex];
    
    // 替换为你需要监听的列的MappingName
    if(targetColumn.MappingName != "TargetColumnName")
    {
       return;
    }
    
    // 执行后续业务逻辑
}

补充说明

  • RowColumnIndex.ColumnIndex对应的是列在DataGrid中的显示索引,若存在隐藏列,需额外结合列的IsVisible属性判断
  • 使用MappingName判断的方式更适合列结构可能变动的场景,稳定性更强

内容的提问来源于stack exchange,提问作者user21591607

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:53:40