我想在运行时为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>
问题似乎出在选择器本身。您的逻辑还可以,但由于某种原因,data("kendoTreeList")
返回的对象为null。我更新了您的代码,以便在kendoTreeList
初始化后链接data
。
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);
说起来有点奇怪,但我认为你的代码和我的代码是等效的。显然不是,但我不明白为什么。
您的主要问题是将DOM元素的id设置为"treeList"。
var grid = $("#treelist").data("kendoTreeList");
正如您在这里看到的,您在设置网格变量时使用了全部小写字母。那是你唯一的问题。它应该是这样的:
var grid = $("#treeList").data("kendoTreeList");