Jump to content

Плагин фильтр у гридов


=GGG=
 Share

Recommended Posts

Всем привет! Хорошие фильтры, наподобие как у DevExpress VCL. Изучив  поведение фильтра из этой статьи, понял что:

1) фильтруется только текущая страница, по остальным страницам фильтр не действует, ожидаемо чтоб фильтр прошелся по всем данным и построил заново набор данных.

2) при использовании типа фильтра List, список строится из данных столбца только текущей страницы. Но этот момент можно обойти, построим свой список используя свойство options: [''Казахстан'', ''Украина'', ''Россия'']

s := s + sLineBreak + 'columns[' + i.ToString + '].filter = {type: ''list'', options: [''Казахстан'', ''Украина'', ''Россия'']};

и теперь вопрос. Как реализовать фильтрация по всему набору данных грида, использую эти фильтры?

Link to comment
Share on other sites

1. К сожалению, так и есть. И это связано с тем, что фильтр работает только на фронте, в браузере, и не лезет в бэкэнд. Поэтому, такое фильтр лучше применять, когда загружены в сетку все записи. Само собой, чтобы их было относительно не много.

2. Дай пример, как ты отправляешь готовый список options.

Link to comment
Share on other sites

20 hours ago, x11 said:

1. К сожалению, так и есть. И это связано с тем, что фильтр работает только на фронте, в браузере, и не лезет в бэкэнд. Поэтому, такое фильтр лучше применять, когда загружены в сетку все записи. Само собой, чтобы их было относительно не много.

2. Дай пример, как ты отправляешь готовый список options.

procedure DbgLoadFilters(dbg: TUniDBGrid);
var
    s: string;
    i: Integer;
begin
    dbg.ClientEvents.ExtEvents.Values['afterrender'] := 'function afterrender(sender, eOpts) { sender.addPlugin(''gridfilters''); }';

    for i := 0 to pred(dbg.Columns.Count) do
    begin
        if s.IsEmpty then
            s := 'columns[' + i.ToString + '].filter = {type: ''list''};'
        else
            s := s + sLineBreak + 'columns[' + i.ToString + '].filter = {type: ''list'', options: [''Казахстан'', ''Украина'', ''Россия'']};
    end;

    dbg.ClientEvents.ExtEvents.Values['reconfigure'] :=
        'function reconfigure(sender, store, columns, oldStore, oldColumns, eOpts) { ' + s + sLineBreak + '}';
end;

Link to comment
Share on other sites

21 hours ago, x11 said:

1. К сожалению, так и есть. И это связано с тем, что фильтр работает только на фронте, в браузере, и не лезет в бэкэнд. Поэтому, такое фильтр лучше применять, когда загружены в сетку все записи. Само собой, чтобы их было относительно не много.

2. Дай пример, как ты отправляешь готовый список options.

https://fiddle.sencha.com/#fiddle/2jgl&view/editor  вот пример работы фильтрации по всему набору данных. Может Шерзод поможет реализовать эту схему?

Link to comment
Share on other sites

1 hour ago, x11 said:

Интересно, а как добавить этот функционал?

Screenshot_1.jpg

не понял вопроса. По идее просто указать тип фильтра.

s := s + sLineBreak + 'columns[' + i.ToString + '].filter = {type: ''string''};

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...