现在Ajax流行,各类Tree的第三方控件支持异步加载的非常多。
我们项目组的成员通常到处找些树控件来用,给项目的稳定性带来很多隐患,出了几次问题。
我建议大家考虑直接使用.net自带的TreeView控件。但这个控件这样才能异步加载呢?
先看看示例代码:
其中 SelectAction="Expand" PopulateOnDemand="true" 这两个属性是关键,在后台代码中,大家也可以看到给有子节点的节点,需要设置相关属性





后台代码:
注意PopulateNode ,这个代码中的写法,是因为我连接的是一个每个层级的部门分别放在不同数据库表,如果各个层级的部门数据都在同一个表里,代码将更加简单。
TopSmart.UtilClass.Data.IDatabase 这个我自己封装数据库的类,大家可以替换使用自己常用的数据库类,然后就可以了





































NewNode.PopulateOnDemand = (Depth == 2) ? false : true; 这句是因为等于2的时候,我的系统没有更低的子部门了。大家可以灵活使用,呵呵。
代码完毕。大家看看,是不是很简单?
而且简单的就控制哪个节点可以异步加载,哪个不用。不用写脚本,不用写web service,呵呵。
官方的文档,大家可以参考msdn:地址为
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref16/html/P_System_Web_UI_WebControls_TreeNode_PopulateOnDemand.htm