我是使用剑道网格UI的新手,我正在尝试使用简单的代码(在更新时)创建一个不可编辑的列:
schema: {
id: 'ID',
fields: {
id: { editable: false }
}
}
此默认模式默认情况下使id列不可编辑,并且我什至无法创建id的新行。 我想使其不可编辑(更新时),但我希望可以创建行并从用户分配ID(创建时)。
有什么想法吗?
编辑:
PS:属性不仅仅与id相关,它可以出现在每一列上(不能更新但可以创建)
答案 0 :(得分:1)
editable
需要一个函数而不是一个值。
columns: [
{ field: 'value', editable: function () { return false; } }
],
答案 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);
}
}
现在,如果您希望根据模型中设置的条件在该事件中添加条件,则也可以在事件中访问它:
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);
}
}
}
您可以在模型中自己添加一个选项,以设置是否可以更新或仅创建列,并在事件内部处理该信息,并随时取消编辑。
答案 2 :(得分:0)
这是我刚刚做的,尽管还有其他方法。
在columns
选项中,如果您从一列中不知道field
选项的绑定位置,则不知道。
然后使用模板选项显示(绑定)ID。因此使其只读
columns: [
{
title: 'Id', width: "40px",
template: "#= id #",
},
...]