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

如何在绑定数据的cxGrid中正确显示隐藏列并置于末尾且不破坏网格?

解决cxGrid隐藏列无法正常显示及网格损坏问题

设计时修复步骤(推荐)

  • 右键cxGrid选择「Columns...」打开列设计器(避免使用「Customize...」界面,防止触发异常)。
  • 在列列表中找到CODIGO_PRIORIDADE列,确认其FieldName已正确绑定数据集对应字段,ValueType为Float。
  • 将该列的Visible属性改为True,选中列后点击设计器右侧的「Move to End」按钮(或拖拽到列列表最底部),将其排至所有现有列之后。
  • 关闭设计器并运行程序,验证列是否正常显示、网格结构是否完整。

运行时代码实现(动态调整场景适用)

若需通过代码动态将该列显示到网格末尾,可在窗体初始化或数据集激活时执行以下代码:

var
  AColumn: TcxGridColumn;
begin
  // 检查目标列是否已存在
  AColumn := cxGrid1TableView1.GetColumnByFieldName('CODIGO_PRIORIDADE');
  if Assigned(AColumn) then
  begin
    AColumn.Visible := True;
    // 将列移动到末尾
    AColumn.Index := cxGrid1TableView1.ColumnCount - 1;
    // 确保值类型正确
    AColumn.DataBinding.ValueType := 'Float';
  end
  else
  begin
    // 列不存在时手动创建绑定
    AColumn := cxGrid1TableView1.CreateColumn;
    AColumn.FieldName := 'CODIGO_PRIORIDADE';
    AColumn.Caption := '优先级编码'; // 可自定义列标题
    AColumn.DataBinding.ValueType := 'Float';
    AColumn.Visible := True;
    AColumn.Index := cxGrid1TableView1.ColumnCount - 1;
  end;
end;

异常原因说明

网格列名称变为1的问题,多是使用「Customize...」界面时触发了cxGrid的列同步异常,尤其是数据集字段与网格列绑定关系出现冲突时。直接使用列设计器或代码操作,可避免界面交互导致的元数据损坏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:55:31