如何过滤主细节表格

时间:2018-10-19 18:56:22

标签: delphi delphi-10.2-tokyo

我在Delphi中工作,在一个项目中,我确实有一个cxgrid,其中包含master和明细网格。 让我们假设,我们有一个包含多条线的主网格,其中只有很少几条线具有细部网格。我必须搜索文本,以便如果文本不存在于主网格线中,而是存在于同一主网格线的各个详细信息网格中,那么在过滤列表中,我可以看到主网格线。 (没有文字)。

在这方面请帮助我。

谢谢

1 个答案:

答案 0 :(得分:0)

devexpress没有为此提供的现成函数。您必须解决。一种简单的方法是在主表中创建一个不可见的列,其中将包含详细信息中的所有可搜索文本。如果您愿意,可以使用此功能:

procedure FilterAll(A_vDBTable: TcxGridDBTableView; ASearchString: string);
var
  AView: TcxGridDBTableView;
  I: Integer;
  s: string;
begin

  AView := A_vDBTable;

  AView.DataController.Filter.Clear;
  AView.DataController.Filter.Root.Clear;
  AView.DataController.Filter.Root.BoolOperatorKind := fboOr;

  if ASearchString = '' then
  begin
    Exit;
  end;


  s := '%' + ASearchString + '%';
  for I := 0 to AView.ColumnCount - 1 do
  begin
    AView.DataController.Filter.Root.AddItem(AView.Columns[I],foLike,s,s);
  end;
  AView.DataController.Filter.Active := True;
end;