Несъответствия в методите за източник на данни KendoUI read() и query().

При натискане на бутон трябва да прочета първата страница от данните си. Общият отговор е да се използва методът query() на източник на данни, указване на страница и други допълнителни стойности чрез parameterMap. Проблемът е, че в моя източник на данни също използвам агрегати и методите query() изглежда изобщо не ги обработват. Прав ли съм? Дали защото само read() използва настройките "transport.read"? Има ли друг начин за нулиране на мрежа, обвързана с източник на данни, към първата страница, поддържаща всички настройки на източника на данни?


person Matteo Piazza    schedule 12.12.2012    source източник


Отговори (2)


Да, приятелю, има специфичен метод за страниране -> dataSource.page(3). Ето връзка от документацията.

person Petur Subev    schedule 12.12.2012
comment
Добре, но какво ще стане, ако трябва да променя parameterMap, преди да извикам page(1)? Възможно ли е програмно да се замени parameterMap при всяко повикване? - person Matteo Piazza; 13.12.2012
comment
@Matteo за повечето свойства в кендо уеб контролите, включително карта с параметри за източник на данни, можете да замените свойството js с функция, вижте документ: docs.kendoui.com/api/framework/ - person Chris; 14.12.2012

Реших проблема си (прочетох първата страница с данни чрез източник на данни, с параметри), като използвах "datasource.page(1)" и зададох стойностите в parameterMap чрез "наблюдаем" обект, така че те се актуализират, когато променя параметрите си и изпратено чрез заявката "page(1)".

=== JAVASCRIPT ===
var vm = kendo.observable({
    param1: "value1",
    param2: "value2",
    param3: "value3"
});

var datasource = new kendo.data.DataSource({
    transport: {
        parameterMap: function (inputParams, operation) {
            return JSON.stringify($.extend({
                param1: vm.get("param1"),
                param2: vm.get("param2"),
                param3: vm.get("param3"),
            ));
        }
    }
});

$("#btn").bind("click", function(e) {
    // set call parameters, if needed
    vm.set("param1", "new value");
    datasource.page(1);
});


=== HTML ===
<button class="k-button" id="btn">GetData</button>
person Matteo Piazza    schedule 13.12.2012