Kendo MVVM Grid - Transport.create не выполняется
У меня есть следующая сетка Kendo MVVM:
<div id="permissionTypeGrid" data-role="grid"
data-sortable="true"
data-scrollable="true"
data-editable="true"
data-toolbar="['create', 'save', 'cancel']"
data-bind="source: permissionTypes"
data-auto-bind="true"
data-columns="[
{ 'field': 'PermissionType', 'width': 60 },
{ 'field': 'Description', 'width': 300 },
{ 'field': 'DisplayOrder', 'width': 60 },
{ 'command': [{name: 'destroy', text: 'Delete'}], 'width': 40 }
]">
</div>
И следующий вид модели:
self.permissionTypeGrid = kendo.observable({
isVisible: true,
permissionTypes: new kendo.data.DataSource({
schema: {
parse: function (results) {
var permissionTypes = [];
for (var i = 0; i < results.Data.Data.length; i++) {
var permissionType = {
PermissionType: results.Data.Data[i].SystemPermissionTypeCode,
Description: results.Data.Data[i].SystemPermissionTypeDescription,
DisplayOrder: results.Data.Data[i].DisplayOrder
};
permissionTypes.push(permissionType);
}
return permissionTypes;
}
},
transport: {
read: {
url: "/api/ServiceApi?method=Ref/SystemPermissionTypes",
},
create: {
url: "/api/ServiceApi?method=Ref/SystemPermissionTypes"
},
update: {
url: "/api/ServiceApi?method=Ref/SystemPermissionTypes"
},
destroy: {
url: "/api/ServiceApi?method=Ref/SystemPermissionTypes"
},
parameterMap: function (options, operation) {
if (operation !== "read" && options.models) {
return { models: kendo.stringify(options.models) };
}
}
}
})
});
kendo.bind($("#permissionTypeGrid"), self.permissionTypeGrid);
Transport.read работает нормально, но URL для transport.create никогда не выполняется, равно как и функция parameterMap. Если я добавляю новую запись в сетку и затем нажимаю "Сохранить изменения", разве не должна всегда вызываться функция parameterMap? Кроме того, http-запрос на чтение выполняется, как и ожидалось, но ни один не генерируется для создания.
1 ответ
Решение
Вам нужна схема и ID.
Если вы добавите строку model: { id: "DisplayOrder" },
после того, как схема будет запущена, ваше создание начнет срабатывать, когда вы нажмете сохранить изменения.
Конечно, это не та область, которую вы захотите использовать для идентификации, но она должна заставить вас работать.
schema: {
model: { id: "DisplayOrder" },
parse: function (results) {
...
}