现在我正在学习使用kendoui开发一个web应用程序,当我尝试使用cusomized popup kendoWindow而不是kendo内置编辑窗口来更新网格数据时,我不知道如何将请求发送到远程服务,所以我尝试在this page中的官方api文档中找到答案,但是出现了一个新问题,显示如下:
<script>
var dataSource = new kendo.data.DataSource({
transport: {
read : function (options) {
/* implementation omitted for brevity */
},
update: function (options) {
// make JSONP request to http://demos.kendoui.com/service/products/update
$.ajax({
url : "http://demos.kendoui.com/service/products/update",
dataType: "jsonp", // "jsonp" is required for cross-domain requests; use "json" for same-domain requests
// send the updated data items as the "models" service parameter encoded in JSON
data : {
models: kendo.stringify(options.data.models)
},
success : function (result) {
// notify the data source that the request succeeded
options.success(result);
},
error : function (result) {
// notify the data source that the request failed
options.error(result);
}
});
}
},
batch : true,
schema : {
model: { id: "ProductID" }
}
});
dataSource.fetch(function () {
var product = dataSource.at(0);
product.set("UnitPrice", 20);
dataSource.sync(); makes request to http://demos.kendoui.com/service/products/update
});
</script>
这是一个示例,用于说明如何将update指定为向远程服务发出HTTP请求的函数
我的问题是传递给读取和更新功能的参数'options'是什么。 我发现的唯一线索是transport.parametermap函数的参数,但我不确定它们之间是否存在某种关系,所以希望有人为我解释一下
答案 0 :(得分:5)
options参数是您已经发现的。 KendoUI让你为它的数据源类的数据访问方法指定一个函数而不是一些配置。
如果你指定一个函数,kendoUI怎么能知道你何时完成加载数据?它不可能。 所以有这个options-variable传递给你的函数(实际上,它可以有每个名字,例如dfhajkfhd)你可以调用它让kendoUI知道你的进度。 为此,它可以使用成功和错误方法。
您从kendo-docs中复制的评论恰恰说明了这一点。
或者你有什么不同的问题吗?
答案 1 :(得分:1)
非常感谢那些回答过这个问题的人并尝试
我在问题中链接的kendo-docs底部找到了答案。
最后一步是将数据同步到数据库 以下是我使用的代码
var updateDataSource = new kendo.data.DataSource({
type: "odata",
transport: {
read: {
url: "/api/odata/PEMEP/TaskInformations/?"
},
update: {
url: "/api/odata/PEMEP/TaskInformations/?",
type: "PUT",
dataType: "json",
},
},
schema: {
model: {
id: "_id"
}
},
sync: function() { // close edit window when update request finished
$("#window").data("kendoWindow").close();
},
error: function(e) {
console.log(e.status);
}
});
updateDataSource.fetch(function() {
var task = updateDataSource.get(id); // get dataitem by id
task.set("status", status); // set new values
task.set("retreatReason", retreatReason);
updateDataSource.sync(); //submit the change
});