delphi - 如何将非绑定(bind)列添加到 DevExpress 数据库 QuantumGrid

标签 delphi devexpress delphi-xe2 vcl unidac

我正在使用这些组件:

UniDac for connection to mysql database
DevExpress for QuantumGrid

开发环境:

Embarcadero Rad Studio XE2

我有一个具有一层的 cxGrid 组件和一个指定为该层 View 的 cxGrid1DBTableView。我可以从我的数据库中获取数据并在网格中进行编辑。我想添加一个不在绑定(bind)数据集中的列。当我将 Column properties 值指定为 CheckBox 时,我可以看到该列,但我无法通过单击将值从未选中更改为已选中。该字段没有分配给它的 DataBinding。我尝试了其他类型的属性,但都是一样的,我无法更改网格中的行值。

这几天我一直在寻找解决这个问题的方法,所以我希望你们能帮助我。

最佳答案

您是否要添加一个后面没有数据库字段的复选框项目?我的一张表格上有这个。

除了将 Properties 设置为“Checkbox”之外,您还需要将 DataBinding -> ValueType 设置为“Boolean”。 DataBinding->FieldName 可以留空。

要访问值或更改它们的默认值,您可以像这样使用 DataController:

View.DataController.Values[i, CheckBoxFieldIndex] := true;

另外还需要设置

DataController.DataModeController.SmartRefresh := true; 

要设置该选项,您还需要为 Controller 定义一个 KeyField (DataController.KeyFieldNames)

将 SmartRefresh 设置为 true 将阻止网格尝试从基础数据集中获取更新的值。您需要阻止刷新,否则非绑定(bind)列的值将被设置回 Null。这对您如何更新数据集有一些限制。除非您明确刷新网格,否则对代码中的数据所做的任何更改都不会反射(reflect)在网格中。

关于delphi - 如何将非绑定(bind)列添加到 DevExpress 数据库 QuantumGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958291/

相关文章:

delphi - 有没有办法知道 TEvent 的状态?

asp.net - 编辑后如何从数据库刷新 ASPxGridView

delphi - 在项目的主要单元中使用条件 - IDE 会破坏代码

delphi - 使用 GDI+ 淡入淡出图像(即仅更改 TGPGraphic 的 Alpha channel )

delphi - 从远程 FTP 下载文件列表

添加后 delphi TCollection 计数不增加

delphi - 备忘并创建文件和文件夹?

javascript - DevExtreme 图表中同一线条的混合线条样式

c# - 如何将 "empty"行插入到数据表中?

delphi - 打印机设置对话框启动打印机