MSMK Posted October 5, 2021 Share Posted October 5, 2021 Всем привет! Хорошие фильтры, наподобие как у DevExpress VCL. Изучив поведение фильтра из этой статьи, понял что: 1) фильтруется только текущая страница, по остальным страницам фильтр не действует, ожидаемо чтоб фильтр прошелся по всем данным и построил заново набор данных. 2) при использовании типа фильтра List, список строится из данных столбца только текущей страницы. Но этот момент можно обойти, построим свой список используя свойство options: [''Казахстан'', ''Украина'', ''Россия''] s := s + sLineBreak + 'columns[' + i.ToString + '].filter = {type: ''list'', options: [''Казахстан'', ''Украина'', ''Россия'']}; и теперь вопрос. Как реализовать фильтрация по всему набору данных грида, использую эти фильтры? Quote Link to comment Share on other sites More sharing options...
x11 Posted October 5, 2021 Share Posted October 5, 2021 1. К сожалению, так и есть. И это связано с тем, что фильтр работает только на фронте, в браузере, и не лезет в бэкэнд. Поэтому, такое фильтр лучше применять, когда загружены в сетку все записи. Само собой, чтобы их было относительно не много. 2. Дай пример, как ты отправляешь готовый список options. Quote Link to comment Share on other sites More sharing options...
MSMK Posted October 6, 2021 Author Share Posted October 6, 2021 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; Quote Link to comment Share on other sites More sharing options...
MSMK Posted October 6, 2021 Author Share Posted October 6, 2021 21 hours ago, x11 said: 1. К сожалению, так и есть. И это связано с тем, что фильтр работает только на фронте, в браузере, и не лезет в бэкэнд. Поэтому, такое фильтр лучше применять, когда загружены в сетку все записи. Само собой, чтобы их было относительно не много. 2. Дай пример, как ты отправляешь готовый список options. https://fiddle.sencha.com/#fiddle/2jgl&view/editor вот пример работы фильтрации по всему набору данных. Может Шерзод поможет реализовать эту схему? Quote Link to comment Share on other sites More sharing options...
x11 Posted October 6, 2021 Share Posted October 6, 2021 Интересно, а как добавить этот функционал? Quote Link to comment Share on other sites More sharing options...
MSMK Posted October 6, 2021 Author Share Posted October 6, 2021 1 hour ago, x11 said: Интересно, а как добавить этот функционал? не понял вопроса. По идее просто указать тип фильтра. s := s + sLineBreak + 'columns[' + i.ToString + '].filter = {type: ''string''}; 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.