gpt4 book ai didi

kendo-ui - 剑道网格批量编辑 - 一次调用即可保存

转载 作者:行者123 更新时间:2023-12-04 10:08:15 28 4
gpt4 key购买 nike

打开 Kendo 网格批量编辑后,我知道您可以连接到创建、更新和销毁命令,当您单击“保存更改”时,Kendo 将向服务器发送 3 个单独的命令。

我想知道是否有任何方法可以将所有三组更新作为对服务器的单个调用发送 - 就像事务一样。或者甚至以指定的顺序发送每个,在发送下一个之前检查是否成功。

我能想出的唯一方法是有一个自定义的保存更改实现,当调用时,它将查找网格数据源以找出所有已添加的行(isNew() 用于添加行),删除(_destroyed 用于删除行),更新(更新行的 isDirty),然后使用 ajax 使用识别的数据集制作我自己的对服务器端点的调用。

最佳答案

Telerik 最近在他们的代码库中发布了一个解决方法:http://www.kendoui.com/code-library/mvc/grid/save-all-changes-with-one-request.aspx .不幸的是,解决方法相当简单。它提供了一个很好的示例,说明如何捕获损坏的、脏的和新的记录,但最后还是挥手处理响应中的任何错误并在成功时同步数据源。另请注意,在发出 ajax 请求之前,没有检查以确保有被破坏的、脏的或新的记录。

这是相关的代码。从上面的链接下载完整示例以查看网格的设置方式并确保您拥有最新版本。

function sendData() {
var grid = $("#Grid").data("kendoGrid"),
parameterMap = grid.dataSource.transport.parameterMap;

//get the new and the updated records
var currentData = grid.dataSource.data();
var updatedRecords = [];
var newRecords = [];

for (var i = 0; i < currentData.length; i++) {
if (currentData[i].isNew()) {
//this record is new
newRecords.push(currentData[i].toJSON());
} else if(currentData[i].dirty) {
updatedRecords.push(currentData[i].toJSON());
}
}

//this records are deleted
var deletedRecords = [];
for (var i = 0; i < grid.dataSource._destroyed.length; i++) {
deletedRecords.push(grid.dataSource._destroyed[i].toJSON());
}

var data = {};
$.extend(data, parameterMap({ updated: updatedRecords }), parameterMap({ deleted: deletedRecords }), parameterMap({ new: newRecords }));

$.ajax({
url: "/Home/UpdateCreateDelete",
data: data,
type: "POST",
error: function () {
//Handle the server errors using the approach from the previous example
},
success: function () {
alert("update on server is completed");

grid.dataSource._destroyed = [];
//refresh the grid - optional
grid.dataSource.read();
}
})
}

关于kendo-ui - 剑道网格批量编辑 - 一次调用即可保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17033025/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com