Источник данных кендо: метод добавления стирает существующие данные

Код ниже получает мой список категорий и отображает их. Однако, когда я раскомментирую среднюю строку кода, чтобы добавить запись «Все категории», все остальные категории исчезают, и отображается только вставленная запись «Все категории».

var categoryDataSource = new kendo.data.DataSource({
    transport: { read: resolveUrl('~/Catalog/Categories') },
});

//categoryDataSource.insert({ "Title": "All Categories", "OID": "0" }, 0);

$("#categoriesDropDown").kendoDropDownList({
    dataTextField: "Title",
    dataValueField: "OID",
    dataSource: categoryDataSource
});

Что я здесь делаю неправильно?


person BVernon    schedule 16.04.2015    source источник
comment
[Я переместил свой ответ в комментарии, так как это не та проблема, с которой вы столкнулись. Ответ @Robin лучший.] У вас есть параметры в обратном порядке в соответствии с Документация по Kendo UI API.   -  person Brett    schedule 16.04.2015


Ответы (1)


Я считаю, что проблема заключается в том, что источник данных не выполнил выборку данных, у него нет набора записей для вставки. Поэтому, когда вы вставляете один, он наносит удар по всему тому, что будет использоваться в качестве набора данных. Я могу воспроизвести поведение, используя локальный массив (http://jsbin.com/xaruka/1/edit?html,js,output).

Я думаю, что вы читаете после настройки источника данных, у него будет свой внутренний список элементов для вставки.

var categoryDataSource = new kendo.data.DataSource({
    transport: { read: resolveUrl('~/Catalog/Categories') },
});

categoryDataSource.read();

categoryDataSource.insert(0, { "Title": "All Categories", "OID": "0" });

$("#categoriesDropDown").kendoDropDownList({
    dataTextField: "Title",
    dataValueField: "OID",
    dataSource: categoryDataSource
});

Рабочий образец http://jsbin.com/xaruka/2/edit?html,js,output

person Robin Giltner    schedule 16.04.2015
comment
В качестве альтернативы, если эту вставку необходимо выполнять каждый раз, когда происходит чтение, вы можете поместить код вставки в функцию события обратного вызова requestEnd источника данных. Справочник - person Brett; 16.04.2015