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

时间:2012-12-19 17:58:35

标签: delphi devexpress delphi-xe2 vcl unidac

我正在使用这些组件:

UniDac for connection to mysql database
DevExpress for QuantumGrid

IDE:

Embarcadero Rad Studio XE2

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

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

2 个答案:

答案 0 :(得分:4)

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

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

要访问这些值或更改其默认值,您可以使用DataController,如下所示:

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

此外,您需要设置

DataController.DataModeController.SmartRefresh := true; 

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

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

答案 1 :(得分:0)

您还必须使用其中一个数据集字段填写 View.DataController.KeyFieldNames 字段。至少我在Delphi 7中需要它。