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

DevExpress GridControl能否将首列设为字段名列展示JSON数据?

用DevExpress GridControl实现字段名-数据的两列展示方案

GridControl完全支持你要的这种“字段名+对应数据”的两列布局,下面是具体实现步骤:

1. 定义数据模型

先创建一个简单的实体类,用来存储键值对形式的字段名和数据:

public class ETFFieldData
{
    public string FieldName { get; set; }
    public object FieldValue { get; set; }
}

2. 解析JSON数据

把你提供的JSON解析成List<ETFFieldData>集合,这里以Newtonsoft.Json为例(用System.Text.Json逻辑类似):

// 假设你的JSON字符串存放在jsonStr变量中
var jsonObj = JsonConvert.DeserializeObject<JObject>(jsonStr);
var dataObj = jsonObj["data"] as JObject;

List<ETFFieldData> fieldList = new List<ETFFieldData>();
foreach (var prop in dataObj.Properties())
{
    fieldList.Add(new ETFFieldData
    {
        FieldName = prop.Name,
        FieldValue = prop.Value.ToObject<object>()
    });
}

3. 配置GridControl

设计器操作(新手友好)

  • 从工具箱拖一个GridControl到窗体上,命名为gcETFInfo
  • 点击GridControl右上角的智能标签,选择选择数据源,将其绑定到上面生成的fieldList(或者先定义一个BindingSource绑定到fieldList,再关联GridControl)
  • 自动生成列后,修改第一列的FieldName为FieldName,列标题改为“字段名”;第二列的FieldName为FieldValue,列标题改为“数据值”
  • 打开GridView的智能标签,进入选项:
    • 取消勾选允许编辑,防止用户修改数据
    • 可关闭列标题排序,避免不必要的交互
    • 调整列宽,让内容完整显示

代码绑定(可选)

如果想用代码完成配置,在窗体的Load事件里添加:

private void Form1_Load(object sender, EventArgs e)
{
    // 先完成步骤2的JSON解析,得到fieldList
    gcETFInfo.DataSource = fieldList;

    GridView gvETFInfo = gcETFInfo.MainView as GridView;
    // 清空自动生成的列(如果有的话)
    gvETFInfo.Columns.Clear();

    // 添加字段名列
    GridColumn colFieldName = new GridColumn();
    colFieldName.FieldName = "FieldName";
    colFieldName.Caption = "字段名";
    colFieldName.OptionsColumn.AllowEdit = false;
    gvETFInfo.Columns.Add(colFieldName);

    // 添加数据值列
    GridColumn colFieldValue = new GridColumn();
    colFieldValue.FieldName = "FieldValue";
    colFieldValue.Caption = "数据值";
    colFieldValue.OptionsColumn.AllowEdit = false;
    gvETFInfo.Columns.Add(colFieldValue);

    // 自动调整列宽
    gvETFInfo.BestFitColumns();
}

额外提示

  • 如果需要给字段名添加中文别名(比如把up_l显示为“上涨阈值”),可以在解析JSON时替换字段名,或者给实体类加DisplayName属性后配置GridView列显示
  • 对于数值类型的FieldValue,可以在GridView列属性的DisplayFormat中设置格式(比如保留4位小数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:40:29