Kendo 具有远程数据源的 TreeView 仅填充根元素
Kendo TreeView with remote datasource only populates the root elements
我很难用远程数据源完全填充 Kendo TreeView,尽管使用本地数据源它工作正常。
简而言之,下面的第一个示例使用本地数据源。这一切都很完美:
// local datasource, works perfectly
var local = new kendo.data.HierarchicalDataSource({
data: [
{
"DeviceGroupId": 1,
"DeviceGroupName": "Superdeluxe Devices",
"Devices": [
{
"Id": 1000,
"Name": "My First Device"
},
{
"Id": 1001,
"Name": "My Second Device"
}
]
}
],
schema: {
model: {
children: "Devices"
}
}
});
// initialize - this works!
$("#list-of-devices").kendoTreeView({
dataSource: local,
dataTextField: ["DeviceGroupName", "Name"],
loadOnDemand: false
});
同样,上面的示例工作得很好。现在,下面的第二个示例没有:它只填充树视图的根元素 ("Superdeluxe Devices")。它完全忽略了 children.
// remote datasource
var remote = new kendo.data.HierarchicalDataSource({
transport: {
read: {
url: "/api/devices/list", // <-- confirmed this works
dataType: "json",
contentType: "application/json"
},
schema: {
model: {
children: "Devices"
}
}
}
});
// initialize
$("#list-of-devices").kendoTreeView({
dataSource: remote, // the issue: only shows top level nodes
dataTextField: ["DeviceGroupName", "Name"],
loadOnDemand: false
});
因此,第二个示例中的问题是仅显示顶级节点,没有任何扩展选项。
我调查了以下内容:
- 本地和远程两个数据源中的数据是相同的(我将结果从远程复制到本地)
- Enabled/disabling
loadOnDemand
选项,now setting it by default to 'false'
- 通过 schema.data 和 schema.parse 函数映射内容无效
- 调查了 HierarchicalDataSource API and the TreeView API, as well as the Binding to remote data demo
- 调查了 older UserVoice issue,这表明现在可以完全加载和呈现 TreeView
总而言之,我似乎无法弄清楚为什么本地变体可以完美运行 - 而远程不显示 children。有什么建议吗?
问题出在您的远程数据源定义中,您在其中将 schema.model
定义为传输的一部分,但事实并非如此。应该是:
var remote = new kendo.data.HierarchicalDataSource({
transport: {
read: {
url: "list.json",
dataType: "json",
contentType: "application/json"
}
},
schema: {
model: {
children: "Devices"
}
}
});
schema
与 transport
.
处于同一级别
我很难用远程数据源完全填充 Kendo TreeView,尽管使用本地数据源它工作正常。
简而言之,下面的第一个示例使用本地数据源。这一切都很完美:
// local datasource, works perfectly
var local = new kendo.data.HierarchicalDataSource({
data: [
{
"DeviceGroupId": 1,
"DeviceGroupName": "Superdeluxe Devices",
"Devices": [
{
"Id": 1000,
"Name": "My First Device"
},
{
"Id": 1001,
"Name": "My Second Device"
}
]
}
],
schema: {
model: {
children: "Devices"
}
}
});
// initialize - this works!
$("#list-of-devices").kendoTreeView({
dataSource: local,
dataTextField: ["DeviceGroupName", "Name"],
loadOnDemand: false
});
同样,上面的示例工作得很好。现在,下面的第二个示例没有:它只填充树视图的根元素 ("Superdeluxe Devices")。它完全忽略了 children.
// remote datasource
var remote = new kendo.data.HierarchicalDataSource({
transport: {
read: {
url: "/api/devices/list", // <-- confirmed this works
dataType: "json",
contentType: "application/json"
},
schema: {
model: {
children: "Devices"
}
}
}
});
// initialize
$("#list-of-devices").kendoTreeView({
dataSource: remote, // the issue: only shows top level nodes
dataTextField: ["DeviceGroupName", "Name"],
loadOnDemand: false
});
因此,第二个示例中的问题是仅显示顶级节点,没有任何扩展选项。
我调查了以下内容:
- 本地和远程两个数据源中的数据是相同的(我将结果从远程复制到本地)
- Enabled/disabling
loadOnDemand
选项,now setting it by default to 'false' - 通过 schema.data 和 schema.parse 函数映射内容无效
- 调查了 HierarchicalDataSource API and the TreeView API, as well as the Binding to remote data demo
- 调查了 older UserVoice issue,这表明现在可以完全加载和呈现 TreeView
总而言之,我似乎无法弄清楚为什么本地变体可以完美运行 - 而远程不显示 children。有什么建议吗?
问题出在您的远程数据源定义中,您在其中将 schema.model
定义为传输的一部分,但事实并非如此。应该是:
var remote = new kendo.data.HierarchicalDataSource({
transport: {
read: {
url: "list.json",
dataType: "json",
contentType: "application/json"
}
},
schema: {
model: {
children: "Devices"
}
}
});
schema
与 transport
.