Kendo Grid 可以一直处于编辑模式吗?
Posted
技术标签:
【中文标题】Kendo Grid 可以一直处于编辑模式吗?【英文标题】:Can Kendo Grid be always in edit mode? 【发布时间】:2013-08-20 17:27:12 【问题描述】:有谁知道剑道网格是否可以始终设置为编辑模式?
我们不希望用户单击单元格或按钮来激活编辑模式。我们希望小部件始终显示并可用。
有可能吗?
【问题讨论】:
【参考方案1】:除了使用批量编辑模式,您还可以尝试设置每一列的模板,并使用 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
【讨论】:
谢谢。这是我需要的最接近的答案。 也谢谢你。这对我来说非常有用,直到我启用分组并按列分组后,输入字段都被清空了。解决了一个问题,还有一个问题要解决....:)【参考方案2】:开箱即用,不完全是。您可以启用批量编辑,它会正常显示所有内容,但单击单元格会自动将其切换到编辑器。
Example
要启用它,请在表的数据源上设置 batch: true
。否则,您将进行更深入的脚本编写。检查并简单地在所有行上调用editRow 不会这样做。默认行为是在新行进入编辑模式时禁用对一行的编辑。
因此,快速查看说批处理模式 - 不会一直显示编辑器,但可以开箱即用。
【讨论】:
【参考方案3】:我发现上面的答案非常好。但一个问题是,Kendo 在刷新网格时(例如排序或过滤或调用 refresh() 时)并删除网格的 DOM 元素时不会清理绑定。结果是 dataItems 将有越来越多的“更改”事件排队 - 有点内存泄漏。这可以通过在 dataBinding 事件中取消绑定来避免,如下所示:
dataBinding: function()
var rows = this.tbody.children();
for (var i = 0; i < rows.length; i++)
kendo.unbind(rows[i]);
【讨论】:
以上是关于Kendo Grid 可以一直处于编辑模式吗?的主要内容,如果未能解决你的问题,请参考以下文章
Kendo Grid 编辑内联自定义验证消息,例如对于重复的名称等
Kendo UI Grid:自定义下拉提供程序在视图模式下不显示文本
Kendo Grid 如何以编程方式聚焦网格单元并阻止选择文本