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

如何在加载时修改DevExpress GridView中的指定列值

替换DevExpress GridView中c04_oprogrs列的显示值

嘿,我刚好处理过类似的需求,给你几个实用的解决方案,都是DevExpress GridView里常用的方法,你可以根据自己的场景选:


方法一:用CustomColumnDisplayText事件(最推荐)

这个方法不用修改数据源或SQL,直接在GridView的界面层处理显示逻辑,非常灵活。

步骤:

  1. 找到你的GridView控件,要么在设计器里双击CustomColumnDisplayText事件,要么在代码里手动绑定事件;
  2. 在事件处理方法里,判断当前列是否是目标列,然后根据c04_oprogrs的值替换显示文本:
private void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
{
    // 匹配目标列的FieldName(确保和你GridView里的列字段名一致)
    if (e.Column.FieldName == "c04_oprogrs")
    {
        var rawValue = e.Value;
        if (rawValue != null)
        {
            switch (rawValue.ToString())
            {
                case "1":
                    e.DisplayText = "Take";
                    break;
                case "2":
                    e.DisplayText = "Available";
                    break;
                // 其他值可以保留原始显示,或者自定义默认文本
                default:
                    e.DisplayText = rawValue.ToString();
                    break;
            }
        }
    }
}

方法二:在SQL查询时直接处理

如果希望数据源本身就返回替换后的值(比如多个地方都要用到这个显示逻辑),可以直接在SQL语句里用CASE表达式转换:

SELECT 
    -- 其他需要查询的字段
    CASE c04_oprogrs
        WHEN 1 THEN 'Take'
        WHEN 2 THEN 'Available'
        ELSE CAST(c04_oprogrs AS VARCHAR) -- 其他值保持原样
    END AS c04_oprogrs_display,
    -- 其他字段
FROM your_table_name

之后直接把GridView的列绑定到c04_oprogrs_display字段就行,不用再写界面层的代码。


方法三:添加未绑定列(Unbound Column)

如果不想修改原列的显示,也可以新增一个未绑定列来展示转换后的值:

步骤:

  1. 在GridView的列集合里新增一列,设置FieldName为StatusDisplay,UnboundType为String;
  2. 处理CustomUnboundColumnData事件来赋值:
private void gridView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
{
    // 匹配新增的未绑定列
    if (e.Column.FieldName == "StatusDisplay" && e.IsGetData)
    {
        // 获取原始字段的值
        var oprogrsValue = gridView1.GetListSourceRowCellValue(e.ListSourceRowIndex, "c04_oprogrs");
        if (oprogrsValue != null)
        {
            switch (oprogrsValue.ToString())
            {
                case "1":
                    e.Value = "Take";
                    break;
                case "2":
                    e.Value = "Available";
                    break;
                default:
                    e.Value = oprogrsValue.ToString();
                    break;
            }
        }
    }
}

个人最推荐第一种方法,因为它不影响数据源,只在当前GridView里生效,修改起来也方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:08:36