我正在尝试使用自定义命令按钮设置行的状态字段。网格数据源传输定义如下:
transport: {
read: {
url: "/agent/AgentList",
type: "POST",
dataType: "json",
data: addAntiForgeryToken
},
update: {
url: "/agent/UpdateAgent",
type: "POST",
dataType: "json",
data: addAntiForgeryToken
}
},
自定义命令定义如下:
{
command: [
{
name: "accept",
visible: function(dataItem) {
return dataItem.StatusId === 1;
},
text: "@T("Ralfeus.Agent.Accept")",
click: function(e) {setOfferResponse(this, e, 2);}
}
]
}
实际设置字段的函数定义如下:
function setOfferResponse(grid, sender, response) {
sender.preventDefault();
var dataItem = grid.dataItem($(sender.currentTarget).closest("tr"));
dataItem.StatusId = response;
grid.editRow($(sender.currentTarget).closest("tr"));
grid.saveChanges();
}
我希望调用 saveChanges() 来触发数据源传输的更新方法。但是,它既不会向服务器发出任何请求,也不会报告错误。
我还尝试按照建议将 grid.saveChanges() 替换为 grid.dataSource.sync()(顺便一提,有什么区别?)here但结果是一样的:没有 HTTP 请求,没有错误。
最佳答案
好的,找到原因了。以编程方式更改 dataItem 字段不会使它们变脏。所以我不得不把它弄脏:
dataItem.dirty = true;
grid.saveChanges();
然后就成功了
关于kendo-grid - 剑道网格 saveChanges() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42213523/