ExtJs - пейджинговая и буферизованная сетка на основе удаленных данных БЕЗ удаленного пейджинга и фильтрации

В ExtJ удаленные данные могут быть легко отображены в виде постраничной сетки. Но для этого серверная сторона должна поддерживать подкачку страниц. Кроме того, локальная сортировка и фильтрация в страничной сетке бесполезна, поскольку она фильтрует только элементы текущей страницы. Для получения согласованных результатов требуется удаленная фильтрация и сортировка. Для буферизованных магазинов в бесконечных сетках прокрутки применяется то же самое.

Но это не всегда правильное решение. Особенно, когда удаленный поиск данных занимает некоторое время, пользовательский опыт по фильтрации будет ухудшаться. Также мы не можем использовать функции JavaScript для фильтрации или сортировки.

Решение состоит в том, чтобы ExtJ считывали все данные одновременно и использовали эту локальную копию данных для фильтрации и сортировки данных. Нам понадобится промежуточное хранилище для всего набора данных и основное хранилище, связанное с сеткой для отображения данных. Но для этого потребуется, чтобы основной прокси-сервер имел промежуточное хранилище в качестве источника данных, и, насколько я понимаю, прокси-сервер не может иметь другое хранилище в качестве источника данных.

У кого-нибудь есть идеи, как решить эту проблему? Я не уверен, что набросанное решение является жизнеспособным, но мне нужно как-то согласовать наличие удаленного источника данных.json и использование локальной подкачки, фильтрации и сортировки.

Как мне этого добиться?

6 ответов

Решение

Хотя название выражает реальную озабоченность ExtJs - пейджинг и буферизация сетки на основе удаленных данных БЕЗ удаленного пейджинга и фильтрации, но детали вопроса вводят в заблуждение.

На самом деле рабочее решение для этого: вместо использования buffered хранить, использовать Bufferedrenderer,

BufferedRendererвлияет только на отображение, но не влияет на работу магазина.

  • Локальная сортировка и упорядочение Хотя буферизованное хранилище не допускает локальной сортировки и упорядочения, это решение не ограничивает локальную сортировку и упорядочение.
  • Редактирование: Буферизованное хранилище не поддерживает вставку строк илиsyncпривязать магазин к серверу. Обычное хранилище, которое отображается в сетке с BufferedRenderer, не имеет этих ограничений.

В блоге Sencha есть отличное объяснение BufferedRenderer.

Ограничение: Только локальное решение с прокруткой может быть реализовано с локальной сортировкой и фильтрацией. Пейджинг всегда (насколько я знаю) должен выполняться на сервере. А удаленный пейджинг также подразумевает удаленную фильтрацию и сортировку.

Если вам не нужна какая-либо последующая интеграция с сервером (например, добавление записей, редактирование записей и т. Д.), Вы всегда можете загрузить хранилище данными, полученными из обычного Ext.Ajax.request(). Как только вы загрузите ваш магазин с полученными данными, то локальная фильтрация / сортировка определенно сработает.

Однако я бы посоветовал не отказываться от серверной стороны так быстро. Вы рассматривали какие-либо решения для кэширования или другие варианты, которые могли бы оптимизировать производительность? Хотя описанный вами подход к передаче данных будет работать, он делает это за счет других преимуществ, которые может принести удаленное хранилище и прокси-сервер для управления данными.

Вопрос не совсем понятен. Но я думаю, что вы хотите загрузить все данные с удаленного сервера, и вам нужна локальная фильтрация и подкачка страниц. Это должно быть возможно с расширением pagingMemoryProxy. http://docs.sencha.com/extjs/4.2.2/

Проверьте этот пример на то же самое.

Демо- http://demo.mysamplecode.com/ExtJs/pages/memoryPaging.jsp code http://www.mysamplecode.com/2011/12/extjs-pagingmemoryproxy-ajax-json-data.html

@Lorenz: используйте http://docs.sencha.com/extjs/4.2.0/source/PagingMemoryProxy.html и установите свои удаленные данные в прокси, например. store.getProxy.data = //json хранилище данных и загрузки с использованием store.load, ext-4.2.1.883\examples\locale\multi-lang может послужить хорошим примером.

http://www.sencha.com/forum/showthread.php?262388-Ext.ux.data.PagingStore-updated-for-Ext-JS-4&p=1026287

Этот поток очень помог мне в реализации локальной сортировки, фильтрации и разбиения на страницы.

Вы можете сделать так, чтобы при необходимости можно было загружать данные с сервера. удалив lastOptions перед загрузкой магазина.

С Ext.Ajax и разбиением на страницы прокси памяти не работает в 4.2.1, когда вы загружаете хранилище с помощью loadRawData

Другие вопросы по тегам