问题
我遇到的问题是我的对象已保存并正确返回,但是当它通过“options.success”方法上的kendo.web.min.js文件传递时,模型似乎不会填充具有新值的Id字段。
这是与KendoGrid一起使用的js
dataSource = new kendo.data.DataSource({
transport: {
read: function (options) {
$.ajax({
dataType: 'json',data: options.data, url: 'messagesfetchmessages', cache: false,
success: function (result) {
options.success(result);
}
});
},
create: function (options) {
options.data.Id = 0;
debugger
$.ajax({
dataType: 'json',data: options.data,type: "POST",url: '/api/messages',cache: false,
success: function (result) {
//var model = kendo.stringify(result)
debugger
options.success(result);
},
error: function (result) {
options.error(result);
}
});
},
},
batch: true,
pageSize: 30,
schema: {
data: "data",
model: {
id: "Id",
fields: {
Id: { editable: false, nullable: true },
Sender: { validation: { required: true } },
Subject: { validation: { required: true } },
}
}
}
});
$("#grid").kendoGrid({
dataSource: dataSource,
pageable: true,
height: 400,
toolbar: ["create"],
columns: [
{ field: 'Id', width: "10px" },
{ field: 'Sender', width: "50px" },
{ field: 'Subject', width: "50px" }
{ command: ["edit", "destroy"], title: " ", width: "210px" }],
editable: "popup"
});
以下是结果的几个屏幕截图:
以下是成功保存返回的结果
以下是KendoUI调用“success”并将对象传递给jquery延迟函数后的结果的屏幕截图(注意模型 Id 为null):
success: function (t) {
e.resolve({
response: t,
models: n,
type: i
})
},
令人惊讶的是,敲击键盘只会伤害键盘......任何指针都会非常感激!
答案 0 :(得分:1)
问题最终是如何定义架构。由于我在下面将schema data results设置为“data”。必须以相同的方式返回所有结果才能使绑定生效。
var schema = {
data: "data",
total: 'total',
model: MessageModel,
//http://docs.kendoui.com/api/framework/datasource#schema-object
errors: function(e,a,b) {
if(e && e.responseText){
alert(e.responseText);
debugger
}
},
parse: function(response) {
if(!response.total){
debugger
}
//response.data.DateCreated = new Date();
return response;
},
batch: false,
gridcolumns: columns
}
因此,在帖子的成功函数中,代码如下所示:
success: function (result) {
options.success({
data: result
});
}