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

Delphi 如何将非绑定列添加到DevExpress DB QuantumGrid,delphi,devexpress,delphi-xe2,vcl,unidac,Delphi,Devexpress,Delphi Xe2,Vcl,Unidac,我正在使用这些组件: UniDac for connection to mysql database DevExpress for QuantumGrid IDE: 我有一个具有一个级别的cxGrid组件,并将cxGrid1DBTableView指定为该级别的视图。我可以从数据库中获取数据并在网格中编辑它。我想添加一个不在绑定数据集中的列。当我将列属性值指定为复选框时,我可以看到该列,但不能通过单击将该值从未选中更改为选中。该字段没有指定数据绑定。我尝试了其他类型的属性,但都是相同的,我无法更

我正在使用这些组件:

UniDac for connection to mysql database
DevExpress for QuantumGrid
IDE:

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


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

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

除了将属性设置为复选框外,还需要将DataBinding->ValueType设置为Boolean。数据绑定->字段名可以留空

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

View.DataController.Values[i, CheckBoxFieldIndex] := true;
此外,您还需要设置

DataController.DataModeController.SmartRefresh := true; 
要设置该选项,还需要为控制器DataController.KeyFieldNames定义一个键域


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

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

除了将属性设置为复选框外,还需要将DataBinding->ValueType设置为Boolean。数据绑定->字段名可以留空

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

View.DataController.Values[i, CheckBoxFieldIndex] := true;
此外,您还需要设置

DataController.DataModeController.SmartRefresh := true; 
要设置该选项,还需要为控制器DataController.KeyFieldNames定义一个键域


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

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

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

Hmm这有帮助,现在我可以检查它,但如果我检查一行,然后尝试检查另一行,我不能选择多行。第一行取消选中:/multiselect可以这样做吗?我的意思是我需要允许用户检查多行,我还有一列,其中有一个数据库字段状态,我想让用户可以从组合框中选择一个值。我把组合框放在选项和数据中,通过这些设置绑定ValueType=String和FieldName=Status,我可以看到复选框,但当我选择一个不同的值时,什么都不会发生:/i忘记了关于需要设置SmartRefresh属性。我刚刚更新了我的答案。这对复选框很有用,因为它没有设置数据库字段。我会接受你的答案:谢谢你,你能解释一下为什么我可以更改复选框的值,但是我不能更改组合框,它有一个设置DataBinding->FieldName=Status和DataBinding->ValueType=String,我可以看到列表,但是当我在网格中选择任何它没有改变的项目:在组合框问题上不确定。你应该把它变成一个不同的问题,并包括更多关于如何设置数据集字段和网格列的信息。好的,谢谢你的帮助,我将再问一个问题:你为我节省了时间分配:嗯,这很有帮助,现在我可以检查它,但是如果我检查一行,然后尝试检查另一行(第一行),我不能选择多行取消选中:/multiselect是否可以执行此操作?我的意思是我需要允许用户检查多行,我还有一列,其中有一个数据库字段状态,我想让用户可以从组合框中选择一个值。我把组合框放在选项和数据中,通过这些设置绑定ValueType=String和FieldName=Status,我可以看到复选框,但当我选择一个不同的值时,什么都不会发生:/i忘记了关于需要设置SmartRefresh属性。我刚刚更新了我的答案。这对复选框很有用,因为它没有设置数据库字段。我会接受你的答案:谢谢你,你能解释一下为什么我可以更改复选框的值,但我不能
组合框有一个集合DataBinding->FieldName=Status和DataBinding->ValueType=String,我可以看到列表,但是当我选择任何项目时,它在网格中没有改变:不确定组合框问题。您应该将其转换为另一个问题,并包括有关如何设置数据集字段和网格列的更多信息。好的,谢谢您的帮助,我将再提出一个问题:您为我节省了时间分配: