gpt4 book ai didi

delphi - DevExpress网格中的奇怪过滤器行为

转载 作者:行者123 更新时间:2023-12-03 09:07:22 29 4
gpt4 key购买 nike

我有一个带有2个网格的表单,该表单显示使用Devart UniQuery上的master-detail选项选择的记录。这个工作非常好,详细显示了与主记录有关的通缉记​​录。
我可以选择使用过滤器选择记录(公司)。这是由30个按钮组成,每个按钮上都带有一个字母,然后按一个按钮,然后使用此代码设置过滤器

procedure TfrmJsCompanies.ButtonClick(Sender: TObject);
var
ButtonValue: char;
FilterString: string;
begin
ButtonValue := (Sender as TcxButton).Caption[1];
FilterString := ButtonValue + '%';
with grdCompaniesView1.DataController.Filter.Root do
begin
Clear;
BoolOperatorKind := fboOr;
AddItem(colCompany_Name, foLike, FilterString, FilterString);
end;
grdCompaniesView1.DataController.Filter.Active := True;
grdCompaniesView1.FilterRow.Visible := False;
ActiveControl := grdCompanies;
end;


如果这样做,我会得到预期的结果,除非我先按一个给我主记录并包含明细记录的按钮,然后再按一个不给我主记录的按钮-在这种情况下,上一个选择的明细记录仍然显示在我的详细信息网格中

我该怎么做才能摆脱这种情况?

最佳答案

此行为是由以下事实引起的:在cxGrid级别上执行了筛选,但在DataSet级别上未执行筛选,因此未对DataSet进行筛选。
解决该问题的一种方法可能是:

procedure TForm1.DetailViewFilterRecord(ADataController: TcxCustomDataController; ARecordIndex: Integer;
var Accept: Boolean);
begin
Accept := MasterView.DataController.FilteredRecordCount >0;
end;

procedure TForm1.MasterViewDataControllerFilterChanged(Sender: TObject);
begin
DetailView.DataController.Refresh
end;

关于delphi - DevExpress网格中的奇怪过滤器行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14327893/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com