Сетка Ваадина - фильтрация с ленивой загрузкой

У меня есть vaadin grid, и здорово, что у него ленивая загрузка данных из коробки. Но по некоторым причинам у меня есть собственные фильтры, которые я использую через

CallbackDataProvider<> dataProvider.fetch(Query query)

У объекта запроса есть параметры для загрузки по частям (offset и limit), поэтому мне нужно установить его динамически (?) и каким-то образом прослушивать событие прокрутки сетки для загрузки следующей части данных, когда пользователь прокручивает вниз (?)

Grid.dataComunicator имеет поле Range pushRows, но нет общедоступных методов для его получения. И все, что у меня есть, это сетка с отложенной загрузкой без фильтрованных данных или сетка с активной загрузкой с отфильтрованными данными.

Итак, есть ли способ реализовать фильтрацию данных с ленивой загрузкой в ​​элементе сетки vaadin?


person m.gavr    schedule 07.07.2017    source источник
comment
Вы изучили fromFilteringCallbacks DataProvider? Это может вам помочь   -  person efekctive    schedule 07.07.2017
comment
да. на самом деле я использую CallbackDataProvider<> в качестве поставщика данных для сетки. Но когда я получаю отфильтрованные данные, нет никакой связи с условием сетки (смещение и ограничение для запроса данных).   -  person m.gavr    schedule 07.07.2017
comment
Извините, я ничем не могу помочь, но fetchfromBackEnd не поможет вам, когда прокрутка достигает конца? Я использую конечную точку для данных, чтобы все было проще   -  person efekctive    schedule 07.07.2017
comment
Неа. если я использую конструктор new Query(filter), поля limit и offset остаются в состоянии по умолчанию 0 и 2147483647. Таким образом, все данные извлекаются из базы данных. если я установил пользовательские значения в limit и offset - выполняется только один запрос к базе данных. и когда я прокручиваю вниз, ничего не происходит.   -  person m.gavr    schedule 07.07.2017
comment
Я бы проверил Interface Grid.FetchItemsCallback ‹T›, если вы этого не сделали. В противном случае свяжитесь с ними, потому что проблема с пределом и смещением не имеет особого смысла. В настоящее время я работаю с сеткой, поэтому могу попробовать это сам   -  person efekctive    schedule 07.07.2017
comment
как я понял Grid.FetchItemsCallback<T> не поддерживает фильтры, только порядок сортировки   -  person m.gavr    schedule 07.07.2017


Ответы (1)


хорошо, проблема решена использованием ConfigurableFilterDataProvider<> в качестве оболочки над CallbackDataProvider<>. поэтому, когда я фильтрую таблицу, эта оболочка добавляет условия фильтрации ко всем запросам, и данные загружаются как обычно лениво.

person m.gavr    schedule 10.07.2017