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 Grid 编辑内联自定义验证消息,例如对于重复的名称等

Kendo UI Grid:自定义下拉提供程序在视图模式下不显示文本

Kendo Grid 如何以编程方式聚焦网格单元并阻止选择文本

如何在 kendo.ui.grid 中创建自定义 kendo.ui.Window 以进行编辑

html [kendo] [web]使用Kendo Grid的自定义编辑器