剑道网格的动态默认值

Dynamic default value for Kendo Grid

本文关键字:动态 默认值 网格      更新时间:2023-09-26

我想要一个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);
}

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

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

编辑

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

  • e。container jQuery,编辑容器元素的jQuery对象,用于封装编辑UI。
  • e。模型 kendo.data。Model,要编辑的数据项。使用它的isNew方法来检查数据项是否是新的(创建)或不(编辑)。
  • e。发送方 kendo.ui。Grid,触发事件的小部件实例。

我想你们的点击栏应该有这样的内容

//generate id code
vm.newId = ++highestRadif; // we need to store generated Id
grid.addRow();

then on edit event

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 },
    }
}

我可以为此在数据源模式中放置一个函数。

schema: {
    model: {
        id: "id",
        fields: {
            currencyType: { defaultValue: getDefaultCurrency },
            invoiceDate: { type: "date" }
        }
    }
}
    function getDefaultCurrency() {
        return _.find(vm.currencyTypes, { id: vm.currencyId });
    };