我想在我的Kendo Grid中使用click
列。此字段不是服务器端自动增量,因为我希望用户查看该值并能够更改它。
我目前的解决方案是向Create
按钮添加Click
属性并循环遍历行以找到最高值并将其递增。
但是如何在新创建的行中插入此值? 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);
}
事件发生在创建新行之前。
所以有两种可能的解决方案:
这是我的JS代码:
{{1}}
答案 0 :(得分:6)
您可以使用Grid的edit
事件将新的generatedId
值添加到新网格model
。
这是他们documentation:
的一些解释修改强>
在用户编辑或创建数据项时触发。
- e.container jQuery ,编辑容器元素的jQuery对象,它包装了编辑用户界面。
- e.model kendo.data.Model ,即将编辑的数据项。使用其isNew方法检查数据项是否是新的 (已创建)或未(已编辑)。
- e.sender kendo.ui.Grid ,触发事件的小部件实例。
我想你的点击有这样的东西
//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 },
}
}
答案 1 :(得分:1)
我能够在数据源模式中放置一个函数。
schema: {
model: {
id: "id",
fields: {
currencyType: { defaultValue: getDefaultCurrency },
invoiceDate: { type: "date" }
}
}
}
function getDefaultCurrency() {
return _.find(vm.currencyTypes, { id: vm.currencyId });
};