我想在Kendo网格中创建一个auto increment列。该字段不是服务器端自动递增,因为我希望用户看到该值并能够更改它。

我当前的解决方案是向click按钮添加Create属性,并在行上循环查找最大值并递增。

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

因此,有两种可能的解决方案:

  • 将变量作为默认值,并在我的JS代码中对其进行更新。
  • 以某种方式访问​​新创建的行,并更新值。

  • 这是我的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

    10-06 01:03