1

我想在运行时为 kendoui 树列表设置数据源。请检查以下示例。如果我在设计时设置数据源,我可以看到控件中的数据。但是如果我尝试在运行时设置数据源,我看不到控件中的数据。

<div id="treeList"></div>
<script>
  var data = [ { name: "Jane Doe" }, { name: "John Doe" }];

    var dataSource = new kendo.data.TreeListDataSource({
      data: [ { name: "Jane Doe" }, { name: "John Doe" }]
    });
    $("#treeList").kendoTreeList({
      columns: [
          { field: "name" },
          { command: [{ name: "edit" }] }
      ],
      editable: true
      //,dataSource: dataSource
    });
  var grid = $("#treelist").data("kendoTreeList");
  grid.setDataSource( dataSource);
  grid.dataSource = dataSource;
   grid.dataSource.read();
  grid.dataSource.data(data);
</script>
4

2 回答 2

1

问题似乎出在选择器本身。你的逻辑没问题,但由于某种原因,返回的对象data("kendoTreeList")为空。我更新了您的代码以datakendoTreeList初始化后链接。

var dataSource = new kendo.data.TreeListDataSource({
  data: [ { name: "Jane Doe" }, { name: "John Doe" }]
});

var grid = $("#treeList").kendoTreeList({
  columns: [
      { field: "name" },
      { command: [{ name: "edit" }] }
  ],
  editable: true
}).data("kendoTreeList");

grid.setDataSource(dataSource);

说起来有点奇怪,但我认为你的代码和我的代码是等价的。显然,它不是,但我不知道为什么。

于 2016-04-10T20:36:31.763 回答
0

您的主要问题是您将 DOM 元素的 id 设置为“treeList”。

var grid = $("#treelist").data("kendoTreeList");

正如您在此处看到的,在设置网格变量时使用全小写。那是你唯一的问题。它应该如下所示:

var grid = $("#treeList").data("kendoTreeList");
于 2018-08-21T18:15:56.400 回答