我正在使用这些组件:
UniDac for connection to mysql database
DevExpress for QuantumGrid
IDE:
Embarcadero Rad Studio XE2
我有一个cxGrid组件有一个级别,cxGrid1DBTableView被指定为级别的视图。我可以从我的数据库中获取数据并在网格中进行编辑。我想添加一个不在绑定DataSet中的列。当我将列属性值指定为 CheckBox 时,我可以看到该列,但我无法通过单击将该值从未选中更改为已检查。该字段没有分配 DataBinding 。我尝试了其他类型的属性,但所有属性都相同,我无法更改网格中的行值。
我一直在寻找一种方法来解决这个问题几天,所以我希望你们可以帮助我。
答案 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中需要它。