как отфильтровать сетку основных деталей - PullRequest
0 голосов
/ 19 октября 2018

Я работаю в Delphi. В проекте у меня есть cxgrid, который содержит мастер и детальную сетку.допустим, у нас есть мастер-сетка с несколькими линиями, из которых несколько линий имеют детальные сетки.Я должен выполнить поиск текста, чтобы, если текст отсутствует в строке основной сетки, но присутствует в соответствующей сетке подробностей той же линии основной сетки, то в отфильтрованном списке я вижу линию основной сетки.(без текста).

Пожалуйста, помогите мне, в этом отношении.

спасибо

1 Ответ

0 голосов
/ 22 октября 2018

у 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;
...