2013-08-19 34 views

回答

7

开箱即用,不完全是。您可以启用通常显示所有内容的批量编辑,但单击单元格会自动将其切换到编辑器。

Example

要启用它,放在桌子上的数据源设置{ batch: true }。否则,你就要进行一些更深层次的脚本。检查并只需在所有行上调用editRow即可。默认行为是当一个新的文件进入编辑模式时,禁止对一行进行编辑。

所以,快速查看说批处理模式 - 不会始终显示编辑器,但工作和开箱即用。

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

+0

谢谢。这是我所需要的最接近的答案。 – ThiagoPXP

+0

谢谢你。这对我来说很好,直到我启用了分组,并且按列对输入字段进行分组时,所有内容都被清空了。一个问题下来,还有一个要去...... :) – wavedrop

1

我发现上面的回答是优秀的。然而,一个问题是,Kendo在刷新网格时(例如排序或筛选时或调用refresh()时)不会清除绑定并删除网格的DOM元素。结果是dataItems将有越来越多的“更改”事件排队 - 有点内存泄漏。这可以通过在dataBinding事件中解除绑定来避免,如下所示:

dataBinding: function() { 
    var rows = this.tbody.children(); 
    for (var i = 0; i < rows.length; i++) { 
    kendo.unbind(rows[i]); 
    } 
}