Javascript 不可编辑剑道网格ID

Javascript 不可编辑剑道网格ID,javascript,jquery,kendo-ui,kendo-grid,Javascript,Jquery,Kendo Ui,Kendo Grid,我刚刚使用剑道网格UI,我正在尝试使用一个简单的代码创建一个不可编辑的列(更新时): schema: { id: 'ID', fields: { id: { editable: false } } } 这个默认模式在默认情况下使id列不可编辑,我甚至无法创建id为的新行。 我想使其不可编辑(更新时),但我希望能够创建一行并从用户处分配id(创建时) 有什么想法吗 编辑: PS:属性不仅仅与id相关,它可以出现在每一列上(不能更新,但可以创建)我一直怀疑模型的可编辑

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

schema: {
   id: 'ID', 
   fields: {
     id: { editable: false }
   }
}
这个默认模式在默认情况下使id列不可编辑,我甚至无法创建id为的新行。 我想使其不可编辑(更新时),但我希望能够创建一行并从用户处分配id(创建时)

有什么想法吗

编辑:


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

我一直怀疑模型的可编辑性。这对我来说从来都不起作用。它应该有一些非常深刻的设置,使它的工作,我从来没有意识到它是什么。所以这是一种完成你需要的东西的方法,我知道它确实有效:取消。请查看:

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);
    }
}

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

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);
        }
    }
}


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

我就是这样做的,尽管还有其他方法

选项中,如果从不知道从何处绑定的列中删除
字段
选项

然后使用模板选项显示(绑定)id。从而使其成为只读

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

可编辑
需要函数而不是值

columns: [
    { field: 'value', editable: function () { return false; } }
],
在此处签出:

在上一次演示中,列productName不可编辑,这很好,但在创建新行时,它应该可用!