列表框不显示对数据集所做的更改
Listbox does not show the changes made to the Dataset
我有一个通过 LiveBindings 连接到 ClientDataset 的 FMX ComboBox。一切正常,直到我需要从 ClientDataset 过滤数据。应用过滤器后,ComboBox.Items和ComboBox.ListItems都可以,即是过滤后的ClientDataset中包含的数据。但是 ComboBox 列表框显示的数据总是相同的:第一次显示列表框时 ClientDataset 包含的数据。
procedure TForm14.Button1Click(Sender: TObject);
begin
LinkFillControlToField1.Active := False;
ClientDataset1.Filter := 'TYPE = ''N''';
Clientdataset1.Filtered := not ClientDataset1.Filtered;
// Deactivate and Reactivate the link is necessary to refresh the data
LinkFillControlToField1.Active := True;
end;
在该代码中,我将过滤器更改为 ClientDataset 并停用 LinkFillControlToField,在应用过滤器后,我再次激活它以刷新数据。它在 TListBox 和其他控件上没有问题,但在 TComboBox 上没有问题,虽然 ComboBox.Items 和 ComboBox.ListItems 确实包含正确的数据,但它不是组合框列表框中显示的数据。
有没有办法使用 LiveBindings 解决这个问题?我已经寻找 ComboBox(例如 Repaint)、LinkFillControlToField 和 BindSourceDB 的属性和方法,但对我来说没有任何效果。
我在 Windows 10.Windows 上使用 Delphi 10.4 Update 2,Firemonkey Windows 应用程序(32 或 64)运行。
TIA.,
里卡多
我遇到了同样的问题。我的数据源是 TFireDAC TQuery。我提交了对查询中包含的 parma 的更改。
我的问题解决方案是插入一行以明确清除项目列表。
if (SCM != NULL && SCM->qrySession->Active) {
SCM->qrySession->DisableControls();
// remove all the strings held in the combobox
// note cmbSessionList->Clear() doesn't work here.
cmbSessionList->Items->Clear();
SCM->qrySession->Close();
// ASSIGN PARAM to display or hide CLOSED sessions
SCM->qrySession->ParamByName("HIDECLOSED")->AsBoolean = fHideClosedSessions;
SCM->qrySession->Prepare();
SCM->qrySession->Open();
SCM->qrySession->EnableControls();
}
我有一个通过 LiveBindings 连接到 ClientDataset 的 FMX ComboBox。一切正常,直到我需要从 ClientDataset 过滤数据。应用过滤器后,ComboBox.Items和ComboBox.ListItems都可以,即是过滤后的ClientDataset中包含的数据。但是 ComboBox 列表框显示的数据总是相同的:第一次显示列表框时 ClientDataset 包含的数据。
procedure TForm14.Button1Click(Sender: TObject);
begin
LinkFillControlToField1.Active := False;
ClientDataset1.Filter := 'TYPE = ''N''';
Clientdataset1.Filtered := not ClientDataset1.Filtered;
// Deactivate and Reactivate the link is necessary to refresh the data
LinkFillControlToField1.Active := True;
end;
在该代码中,我将过滤器更改为 ClientDataset 并停用 LinkFillControlToField,在应用过滤器后,我再次激活它以刷新数据。它在 TListBox 和其他控件上没有问题,但在 TComboBox 上没有问题,虽然 ComboBox.Items 和 ComboBox.ListItems 确实包含正确的数据,但它不是组合框列表框中显示的数据。
有没有办法使用 LiveBindings 解决这个问题?我已经寻找 ComboBox(例如 Repaint)、LinkFillControlToField 和 BindSourceDB 的属性和方法,但对我来说没有任何效果。
我在 Windows 10.Windows 上使用 Delphi 10.4 Update 2,Firemonkey Windows 应用程序(32 或 64)运行。
TIA.,
里卡多
我遇到了同样的问题。我的数据源是 TFireDAC TQuery。我提交了对查询中包含的 parma 的更改。 我的问题解决方案是插入一行以明确清除项目列表。
if (SCM != NULL && SCM->qrySession->Active) {
SCM->qrySession->DisableControls();
// remove all the strings held in the combobox
// note cmbSessionList->Clear() doesn't work here.
cmbSessionList->Items->Clear();
SCM->qrySession->Close();
// ASSIGN PARAM to display or hide CLOSED sessions
SCM->qrySession->ParamByName("HIDECLOSED")->AsBoolean = fHideClosedSessions;
SCM->qrySession->Prepare();
SCM->qrySession->Open();
SCM->qrySession->EnableControls();
}