如何将非绑定列添加到 DevExpress DB QuantumGrid

Air*_*olf 3 delphi vcl devexpress delphi-xe2 unidac

我正在使用这些组件:

UniDac for connection to mysql database
DevExpress for QuantumGrid
Run Code Online (Sandbox Code Playgroud)

IDE:

Embarcadero Rad Studio XE2
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*der 5

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

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

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

View.DataController.Values[i, CheckBoxFieldIndex] := true;
Run Code Online (Sandbox Code Playgroud)

另外你需要设置

DataController.DataModeController.SmartRefresh := true; 
Run Code Online (Sandbox Code Playgroud)

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

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