12

有谁知道剑道网格是否可以始终设置为编辑模式?

我们不希望用户单击单元格或按钮来激活编辑模式。我们希望小部件始终显示并可用。

有可能吗?

4

3 回答 3

9

除了使用批量编辑模式之外,您还可以尝试设置每列的模板并使用 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

于 2013-08-19T11:27:57.870 回答
7

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

例子

要启用它,{ batch: true }请在表的数据源上进行设置。否则,您将进行更深入的脚本编写。检查并简单地在所有行上调用editRow不会这样做。默认行为是在新行进入编辑模式时禁用对一行的编辑。

因此,快速查看批处理模式 - 不会一直显示编辑器,但可以开箱即用。

于 2013-08-19T02:44:40.727 回答
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]);
  }
}
于 2016-04-08T16:51:42.493 回答