dgrid/dstore/Rest — Как добавить в запрос дополнительные параметры запроса

Я использовал более старую версию dgrid (onDemandGrid) вместе с додзё JsonRestStore.

На моей веб-странице есть несколько полей ввода (например, дата, имя и т. д.). После изменения одного из этих полей я меняю запрос сетки:

grid.setQuery({y: год, m: месяц, l: имя1, d: флаг, e: имя2});

и запрос Json был чем-то вроде ?y=2015&m=5&l=test1&....

Я узнал, что с актуальной версией dgrid это больше невозможно.

Возможно ли что-то подобное с dgrid/dstore.? Фильтрация, похоже, не вариант, насколько я понял, это только на стороне клиента, и я не могу загрузить все свои данные. Мне нужны некоторые динамические параметры для фильтрации данных на сервере.


person DieterBk    schedule 11.05.2015    source источник


Ответы (1)


эквивалентом dojo/store/JsonRest в dstore является dstore/Rest (однако, если у вас нет совместимого REST API на сервере, вы можете использовать dstore/Request).

Метод filter dstore позволяет делать произвольные запросы. Он возвращает коллекцию со всеми сохраненными примененными фильтрами, чтобы их можно было включать при каждом вызове fetch или fetchRange.

var store = new Request({ target: '/path/to/service' });
var filteredCollection = store.filter({ y: 2015, m: 5 });
filteredCollection.fetch();

приведет к следующему HTTP-запросу:

/path/to/service?y=2015&m=5

Чтобы использовать эту функцию с dgrid 0.4, вы должны назначить отфильтрованную коллекцию экземпляру сетки (и dgrid будет обрабатывать вызов fetch/fetchRange по мере необходимости):

grid.set('collection', store.filter({y: year, m: month}));

dgrid 0.4 и dstore значительно изменили способ взаимодействия сетки с хранилищем. В dgrid 0.3 сетка играла гораздо более активную роль в управлении состоянием запросов к хранилищу — с dgrid 0.4 это уже не так (отсюда удаление метода setQuery). В dgrid 0.4 внешний по отношению к сетке код реализует логику, связанную с фильтрацией данных хранилища. В то время как в dgrid 0.3 вы обычно устанавливаете свойство сетки store один раз и вызываете setQuery всякий раз, когда вам нужно отфильтровать данные, в dgrid 0.4 вы устанавливаете свойство collection каждый раз, когда вам нужно обновить фильтрацию. Магазин dstore Request позволяет настраивать имена параметров для range и sort фильтрация.

person Mangala Sadhu Sangeet S Khalsa    schedule 14.05.2015