我正在实现一个简单的(至少,这是目标)Kendo UI 网格,它显示两列:一列包含复选框,绑定到布尔值,另一列包含项目的显示名称。该checkbox
列有一个简单的模板,并处理了 ,change()
event
以便checkbox
更新。我已经验证了这一点,并且有效。model
datasource
数据源已配置为batch
,并定义了transport
forread
和update
。两者都调用一个执行 ajax 调用的函数。正如我之前所说,该read
功能按预期处理。但是,update
上面定义的函数transport
不是。数据源上的sync()
由一个简单的按钮触发,该按钮的事件与调用(或)click
的函数挂钩。datasource.sync()
grid.saveChanges()
transport: {
read: function(options) {
return loadStuff(options);
},
update: function (options) {
return updateStuff(options);
}
}
在 Kendo UI 代码中进行调试时,看起来 ModelSet 上的模型属性始终为空,因此sync()
决定没有要同步的内容。有人知道这里发生了什么吗?
更新:check
处理复选框/
时看起来可能有问题uncheck
。显然我应该使用类似的东西
$('#divGrid').on('click', '.chkbx', function() {
var checked = $(this).is(':checked');
var grid = $('#divGrid').data().kendoGrid;
var dataItem = grid.dataItem($(this).closest('tr'));
dataItem.set("Selected", checked);
});
不幸的是,看起来该set()
方法未在数据项上定义。调试时,它只包含,并且没有具有该方法data
的 Model 对象。set()
更新 2:
尝试将 ajax 调用返回的数据包装在使用Model.define()
. 这似乎解决了模型不脏的问题,因为模型上的 _modified 属性返回true
。但是,ModelSet 中的模型数组仍然是空的。这是 Kendo UI 中的错误,还是我走错了路?