2013-08-19 60 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]); 
    } 
}