获取节点数据
您可以在select
事件处理程序中获取TreeView节点数据。
function onSelect(e) { // This refers to the TreeView object. var dataItem = this.dataItem(e.node); console.log("Selected node with id=" + dataItem.id); } $("#treeview").kendoTreeView({ dataSource: [ { id: 1, text: "Item 1", items: [ { id: 3, text: "Item 3" } ] }, { id: 2, text: "Item 2" } ], select: onSelect });
节点展开时重新加载子节点
由于dataItem
是的Node
类型,因此可以使用其loaded
标志来强制从服务器重新加载节点。该Node.loaded
方法设置loaded
节点的标志并指示它需要刷新。
function onExpand(e) { var dataItem = this.dataItem(e.node); dataItem.loaded(false); } $("#treeview").kendoTreeView({ dataSource: remoteDataSource, expand: onExpand });
从TreeView收集检查的节点
以下示例演示如何从Kendo UI TreeView收集选中的节点。您也可以使用这种方法来收集扩展的节点。
var treeview = $("#treeview").data("kendoTreeView"); var checkedNodes = []; function gatherStates(nodes) { for (var i = 0; i < nodes.length; i++) { if (nodes[i].checked) { checkedNodes.push(nodes[i].id); } if (nodes[i].hasChildren) { gatherStates(nodes[i].children.view()); } } } gatherStates(treeview.dataSource.view());
投影TreeView状态
在HierarchicalDataSource
不支持数据投影。因此,您可能需要使用schema.parse
配置选项来重新映射状态字段。
<div id="tree"> <script> $("#tree").kendoTreeView({ dataSource: { transport: { read: function (options) { setTimeout(function() { options.success([ { hasChildren: false, text: "Node 1", Downloaded: false }, { hasChildren: true, text: "Node 2", Downloaded: true, items: [ { hasChildren: false, text: "Node 2.1", Downloaded: false }, ] } ]); }, 1000); } }, schema: { parse: function(response) { return $.map(response, function(x) { x.expanded = x.Downloaded; return x; }); }, model: { id: "id", hasChildren: "hasChildren", children: "items" } } } }); </script>
详见:https://docs.telerik.com/kendo-ui/controls/navigation/treeview/common-scenarios#gathering-checked-nodes-from-the-treeview
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统