Kendo Grid的动态默认值

时间:2015-05-24 03:16:09

标签: javascript kendo-ui kendo-grid kendo-asp.net-mvc

我想在我的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); } 事件发生在创建新行之前。

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

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

    {{1}}

2 个答案:

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

Sample

答案 1 :(得分:1)

我能够在数据源模式中放置一个函数。

schema: {
    model: {
        id: "id",
        fields: {
            currencyType: { defaultValue: getDefaultCurrency },
            invoiceDate: { type: "date" }
        }
    }
}

    function getDefaultCurrency() {
        return _.find(vm.currencyTypes, { id: vm.currencyId });
    };