Kendo Grid的动态默认值

Akb*_*ari 6 javascript kendo-ui kendo-grid kendo-asp.net-mvc

我想auto increment在我的剑道网格中有一个专栏.此字段不是服务器端自动增量,因为我希望用户查看该值并能够更改它.

我目前的解决方案是向按钮添加一个click属性Create并循环遍历行以找到最高值并递增它.

但是如何在新创建的行中插入此值?Click事件发生在创建新行之前.

所以有两种可能的解决方案:

  1. 将变量作为默认值并在我的JS代码中更新它.
  2. 以某种方式访问​​新创建的行,并更新该值.

这是我的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);
}
Run Code Online (Sandbox Code Playgroud)

Dio*_*rza 6

您可以使用Grid的edit事件将新generatedId值添加到新Grid model.

这是他们的文档中的一些解释:

编辑

用户编辑或创建数据项时触发.

  • e.container jQuery,编辑容器元素的jQuery对象,它包装了编辑UI.
  • 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();
Run Code Online (Sandbox Code Playgroud)

然后编辑事件

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);
}
Run Code Online (Sandbox Code Playgroud)

注意:您的模式模型的字段必须设置属性editable: true,因为我们可以使用set方法更改模型字段值.此外,如果您的字段架构需要验证,则需要将其删除.

model: {
    id: "ProductID",
    fields: {
        ProductID: { editable: true, nullable: true },
    }
}
Run Code Online (Sandbox Code Playgroud)

样品