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

如何通过点击单元格获取Infragistics网格的Name属性?

获取点击单元格对应的Infragistics UltraGrid的Name属性

在多网格绑定同一单元格点击事件的场景下,直接通过事件的sender参数就能拿到触发事件的网格实例,进而获取其Name属性,具体操作如下:

步骤1:转换sender为UltraGrid实例

在GRD_LIST_Grid_ClickCell方法开头,将sender转换为UltraGrid类型(添加空值判断避免异常):

private void GRD_LIST_Grid_ClickCell(object sender, Infragistics.Win.UltraWinGrid.ClickCellEventArgs e)
{
    // 获取当前触发事件的网格
    var currentGrid = sender as Infragistics.Win.UltraWinGrid.UltraGrid;
    if (currentGrid == null) return; // 转换失败直接退出,避免空引用异常

    // 拿到当前网格的Name属性
    string gridName = currentGrid.Name;
    // 可将gridName传入其他业务方法,或直接传入优化后的ClearSelectedRow
    ClearSelectedRow(currentGrid);

    // 你的原有逻辑代码
    if (e.Cell.Column.ToString().Contains("BAHN") && e.Cell.Tag == "1") 
    {
        e.Cell.Selected = false;
        e.Cell.Tag = null;
        SetPrio(e.Cell.Row.Index, e.Cell.Column.Index);
    }
    else if (e.Cell.Column.ToString().Contains("BAHN") && e.Cell.Tag == null)
    {
        SetPrio(e.Cell.Row.Index, e.Cell.Column.Index);
        e.Cell.Tag = "1";
    }

    // 单元格背景色设置逻辑
    if (e.Cell.Tag == "1")
    {
        e.Cell.Appearance.BackColor = System.Drawing.Color.Green;
    }
    else if (e.Cell.Tag == null)
    {
        e.Cell.Appearance.BackColor = System.Drawing.Color.FromArgb(234,244,243);
    }
}

步骤2:优化ClearSelectedRow方法

原来的方法需要遍历所有网格,现在可以直接传入当前网格实例,仅处理目标网格:

private void ClearSelectedRow(Infragistics.Win.UltraWinGrid.UltraGrid targetGrid)
{
    // 仅清除当前网格的选中行,无需遍历所有网格
    targetGrid.Selected.Rows.Clear();
    // 其他清除逻辑按需添加
}

补充说明

  • sender是.NET事件模型的标准参数,代表触发事件的控件对象,此场景下就是点击单元格所属的UltraGrid实例。
  • 使用as关键字转换比强制转换更安全,转换失败时会返回null,不会抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:55:20