我想在Kendo网格中创建一个auto increment
列。该字段不是服务器端自动递增,因为我希望用户看到该值并能够更改它。
我当前的解决方案是向click
按钮添加Create
属性,并在行上循环查找最大值并递增。
但是,如何在新创建的行中插入该值? Click
事件在创建新行之前发生。
因此,有两种可能的解决方案:
这是我的JS代码:
function createClick(id) {
var grid = $("#" + id).data('kendoGrid');
var highestRadif = 0;
grid.tbody.find('>tr').each(function () {
var dataItem = grid.dataItem(this);
var radif = dataItem.SRadifReqR;
highestRadif = highestRadif < radif ? radif : highestRadif;
})
alert(++highestRadif);
}
最佳答案
您可以使用Grid的edit
事件将新的generatedId
值添加到新的Grid的model
中。
这是他们documentation的一些解释:
我想您的点击有这样的内容
//generate id code
vm.newId = ++highestRadif; // we need to store generated Id
grid.addRow();
然后在编辑事件
edit: function(e) {
var model = e.model; // access edited/newly added model
// model is observable object, use set method to trigger change event
model.set("id", vm.newId);
}
注意:您的模式模型的字段必须设置属性
editable: true
,这是因为使我们能够使用set
方法更改模型字段的值。另外,如果您的字段模式需要验证,则需要将其删除。model: {
id: "ProductID",
fields: {
ProductID: { editable: true, nullable: true },
}
}
Sample