是否有人知道kendo网格是否始终可以设置为编辑模式?
我们不希望用户单击单元格或按钮来激活编辑模式。我们希望窗口小部件可以随时显示和使用。
有可能吗?
答案 0 :(得分:7)
除了使用批处理编辑模式之外,您还可以尝试设置每列的模板,并使用MVVM将输入元素绑定到数据项。
$("#grid").kendoGrid({
dataSource: {
schema: {
model: {
id: "id",
fields: {
id: { editable: false }
}
}
}
data: [
{ id:1, age: 30, name: "John Doe" }
]
},
columns: [
{ field: "id", width: 50 },
{ field: "age", template: "<input data-bind='value: age' data-role='numerictextbox'>" },
{ field: "name", template:"<input data-bind='value: name' >" }
],
dataBound: function() {
var rows = this.tbody.children();
var dataItems = this.dataSource.view();
for (var i = 0; i < dataItems.length; i++) {
kendo.bind(rows[i], dataItems[i]);
}
}
});
这是一个现场演示:http://jsbin.com/ApoFobA/2/edit
答案 1 :(得分:6)
开箱即用,不完全是。您可以启用批量编辑,它可以正常显示所有内容,但单击一个单元格会自动将其切换到编辑器。
要启用它,请在表的数据源上设置{ batch: true }
。否则你会有更深入的脚本。检查并简单地在所有行上调用editRow不会这样做。默认行为是在新行进入编辑模式时禁用对行的编辑。
因此,快速查看批处理模式 - 不会一直显示编辑器,但是可以正常工作。
答案 2 :(得分:1)
我发现上述答案非常好。但有一个问题是,剑道在刷新网格时没有清理绑定(例如在排序或过滤时或调用refresh()时)并删除网格的DOM元素。结果是dataItems将有越来越多的&#34;更改&#34;排队的事件 - 有点内存泄漏。这可以通过在dataBinding事件中解除绑定来避免,如下所示:
dataBinding: function() {
var rows = this.tbody.children();
for (var i = 0; i < rows.length; i++) {
kendo.unbind(rows[i]);
}
}