不可编辑的剑道网格ID

时间:2018-07-31 08:49:23

标签: javascript jquery kendo-ui kendo-grid

我是使用剑道网格UI的新手,我正在尝试使用简单的代码(在更新时)创建一个不可编辑的列:

schema: {
   id: 'ID', 
   fields: {
     id: { editable: false }
   }
}

此默认模式默认情况下使id列不可编辑,并且我什至无法创建id的新行。 我想使其不可编辑(更新时),但我希望可以创建行并从用户分配ID(创建时)。

有什么想法吗?

编辑:

PS:属性不仅仅与id相关,它可以出现在每一列上(不能更新但可以创建)

3 个答案:

答案 0 :(得分:1)

editable需要一个函数而不是一个值。

columns: [
    { field: 'value', editable: function () { return false; } }
],

在此处结帐: https://dojo.telerik.com/oROJayAd

答案 1 :(得分:0)

我总是对该模型editable选项感到怀疑。它从来没有真正为我工作。它应该在设置中有一些很深的内容才能使其正常工作,但我从未意识到。因此,这是一种满足您的需求(我知道它确实有效)的方法:取消edit event。检查一下:

edit: function(e) {
    // Cancels a new row
    if (arguments, e.model.isNew()) {
        this.cancelRow(e.container.parent());
    }
    else { // Cancels a cell editing
        this.closeCell(e.container);
    }
}

Demo

现在,如果您希望根据模型中设置的条件在该事件中添加条件,则也可以在事件中访问它:

edit: function(e) {
    let currentColumn = this.options.columns[e.container.index()].field,
        model = this.dataSource.options.schema.model.fields[currentColumn];

    if (model.editable === false) {
        // Cancels a new row
        if (arguments, e.model.isNew()) {
            this.cancelRow(e.container.parent());
        }
        else { // Cancels a cell editing
            this.closeCell(e.container);
        }
    }
}

Demo

您可以在模型中自己添加一个选项,以设置是否可以更新或仅创建列,并在事件内部处理该信息,并随时取消编辑。

答案 2 :(得分:0)

这是我刚刚做的,尽管还有其他方法。

columns选项中,如果您从一列中不知道field选项的绑定位置,则不知道。

然后使用模板选项显示(绑定)ID。因此使其只读

columns: [
    {
        title: 'Id', width: "40px",
        template: "#= id #",
    },
    ...]