`
阅读更多
笔者前言:本文要说的内容仅针对ASP.NET 2.0以上版本适用,内容也非常的简单,本来不应该放在首页的,但发现不知道的开发者非常多,有必要提醒一下。所以请熟悉Treeview的朋友包涵了,呵呵。

现在Ajax流行,各类Tree的第三方控件支持异步加载的非常多。
我们项目组的成员通常到处找些树控件来用,给项目的稳定性带来很多隐患,出了几次问题。

我建议大家考虑直接使用.net自带的TreeView控件。但这个控件这样才能异步加载呢?
先看看示例代码:
其中 SelectAction="Expand" PopulateOnDemand="true" 这两个属性是关键,在后台代码中,大家也可以看到给有子节点的节点,需要设置相关属性
        <asp:TreeView ID="TreeView1" runat="server" EnableClientScript="true" OnTreeNodePopulate="PopulateNode" ImageSet="Arrows" ExpandDepth="0">
            
<Nodes>
                
<asp:TreeNode Text="部门树" Value="部门树" SelectAction="Expand" PopulateOnDemand="true"/>
            
</Nodes>
        
</asp:TreeView>

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



    
public void PopulateMe(TreeNode node, int Depth)
    
{
        TopSmart.UtilClass.Data.IDatabase db 
= TopSmart.UtilClass.Data.DataAccess.DatabaseCreate("hr");

        DataTable dt;
        
if (Depth == 0)
            dt 
= db.GetDataTableFromSQL("select t.onelevelname as name,t.onelevelno as no from hrt_onelevel_dic t where t.valid = 1");
        
else if (Depth == 1)
            dt 
= db.GetDataTableFromSQL("select t.twolevelname as name,t.twolevelno as no from hrt_twolevel_dic t where t.valid = 1 and t.onelevelno = '" + node.Value + "'");
        
else
            dt 
= db.GetDataTableFromSQL("select t.deptname as name,t.deptno as no from hrt_dept_dic t where t.valid = 1 and t.twolevelno = '" + node.Value + "'");

        
if (dt.Rows.Count > 0)
        
{
            
foreach (DataRow row in dt.Rows)
            
{
                TreeNode NewNode 
= new TreeNode(row["name"].ToString(), row["no"].ToString());
                NewNode.PopulateOnDemand 
= (Depth == 2? false : true;
                NewNode.SelectAction 
= TreeNodeSelectAction.Expand;
                node.ChildNodes.Add(NewNode);
            }

        }

    }

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

http://piedpiper.cnblogs.com
本文是偶原创,想转贴的朋友劳驾写明转贴二字。呵呵
分享到:
评论

相关推荐

    asp.net(c#)tree绑定数据

    在ASP.NET(C#)开发中,Tree控件是一种常见的用户界面元素,用于展示层次结构的数据。它常被用于网站导航、文件系统浏览或者组织复杂的分类信息。本篇将深入探讨如何在C#环境下动态地绑定数据到ASP.NET的Tree控件。 ...

    动态tree(asp.net+ajax+c#)

    在本项目"动态tree(asp.net+ajax+c#)"中,开发者利用了ASP.NET框架,结合AJAX技术和C#后端编程语言来实现这一功能。 首先,ASP.NET是Microsoft开发的一个用于构建Web应用程序的开源框架,它提供了丰富的服务器控件...

    asp.net(c#)树型表格

    在ASP.NET中,树型表格(TableTree)是一种常见的数据展示方式,它将层次结构的数据以树状结构呈现,用户可以展开或折叠节点,便于查看和操作数据。在这个案例中,我们关注的是ASP.NET 2003版本下的C#实现。 首先,...

    ASP.NET 实现的 jquery树

    首先,ASP.NET是微软开发的一个强大的Web应用框架,它提供了丰富的服务器控件和事件处理机制,使得开发者可以便捷地构建Web应用程序。在这个项目中,ASP.NET可能被用来创建后端逻辑,包括处理来自前端的请求,执行...

    微软asp.net树形菜单控件中文版

    在ASP.NET中,TreeView控件可以动态地从数据库或其他数据源加载数据,支持自定义样式和模板,以适应不同的设计需求。它提供了多种交互功能,如节点展开和折叠、节点选择、节点拖放等,使得用户能够与网站进行更直观...

    下拉树 DropTree c# .net

    在C# .NET环境中,我们可以利用ASP.NET技术来开发这种控件。本文将深入探讨下拉树的实现原理、数据传输方式以及性能优化。 首先,下拉树的实现原理主要分为两个部分:服务器端和客户端。在服务器端,通常使用C#进行...

    asp.net treeview 控件级联选择

    ASP.NET TreeView 控件是一种常用的数据展示组件,它以树状结构显示数据,常用于网站导航、目录层次展示等场景。级联选择是TreeView控件的一个高级特性,允许用户在选择一个节点时自动影响其他相关节点的状态。在这...

    asp.net-jquery树

    2. **AJAX交互**:使用jQuery的$.ajax()或$.getJSON()方法发起异步请求到ASP.NET的Web服务或Web API接口,获取数据。 3. **前端渲染**:当服务器返回数据后,jQuery可以解析这些数据,并利用它们来动态构建HTML结构...

    基于C# + jQuery的树形控件

    1. **C#**: C#是微软开发的一种面向对象的编程语言,广泛用于Windows应用开发,尤其是ASP.NET框架下的Web应用程序。在这个项目中,C#主要负责处理服务器端逻辑,如数据获取、处理和响应。 2. **jQuery**: jQuery是...

    asp.net动态加载JavaScript树

    ASP.NET动态加载JavaScript树是一种常见的前端交互技术,用于在网页中构建可扩展的、动态的树形结构。这种技术结合了后端ASP.NET的强大处理能力和前端JavaScript的灵活展示,为用户提供了良好的交互体验,尤其适用于...

    JQuery zTree asp.net实例

    总的来说,`jQuery zTree`为ASP.NET开发者提供了一个强大且易用的Tree控件解决方案。它不仅可以帮助我们高效地展示和管理层次数据,还能通过丰富的API和自定义事件实现高度交互的用户界面。合理运用`jQuery zTree`,...

    asp.net树控件源代码

    ASP.NET树形控件(TreeView)是Web开发中常用的一种UI组件,它用于呈现层次结构的数据,如网站导航、组织结构或文件系统等。在ASP.NET中,Treeview控件提供了一种交互式的用户界面,允许用户通过展开和折叠节点来...

    asp.net 经典树形菜单

    3. **Control.js**:此文件可能是用于定义和管理特定ASP.NET控件的JavaScript代码,比如树形菜单控件。它可能包含了一些初始化、事件绑定、状态管理的函数,使得树形菜单能与服务器端进行通信,并根据服务器端的数据...

    asp.net 树形下拉框

    在ASP.NET中实现树形下拉框,开发者可以利用Ajax技术增强用户体验,通过异步加载数据,提高页面响应速度。 创建ASP.NET树形下拉框主要涉及以下几个步骤: 1. **HTML和服务器端控件**: 首先,你需要在ASP.NET页面...

    asp.net 无级分类实现

    在ASP.NET中,无级分类实现是一项常见的需求,特别是在构建内容管理系统、电子商务网站或任何需要组织大量信息的项目中。这种实现允许用户创建无限层级的类别,为数据提供灵活的结构。以下是对这个主题的详细解释: ...

    ajax tree的例子包括.net的和struts还有js tree

    在.NET中实现Ajax Tree,可以使用ASP.NET AJAX库,该库提供了UpdatePanel、ScriptManager等控件,能够轻松创建异步更新的页面部分,构建树形结构时,可以通过服务器端的数据绑定来动态生成节点。 2. **Struts**:...

    AjaxPro.NET实现的简单高效的Tree

    AjaxPro.NET是一个强大的ASP.NET AJAX库,它允许开发者创建高度交互性和响应性的Web应用程序,而无需深入了解复杂的JavaScript或XMLHttpRequest对象。在这个特定的项目中,"AjaxPro.NET实现的简单高效的Tree"指的是...

    c#无限加载的树形DEMO

    1. **控件选择**:`DefaultTree.aspx`文件表明这个DEMO可能使用了ASP.NET中的TreeView控件。TreeView控件是ASP.NET提供的一种用于显示层次结构数据的视图控件,它可以展现为树状结构,非常适合用来构建多级导航菜单...

    EasyUI tree 及 DataGrid

    综上所述,这个项目展示了如何使用 EasyUI 的 Tree 和 DataGrid 与 Asp.net 后端配合,利用 jQuery 和 AJAX 实现数据的动态加载和交互。同时,数据库和存储过程的使用表明后端具备处理复杂数据操作的能力。通过学习...

    商业编程-源码-AjaxPro.NET实现的简单高效的Tree.zip

    AjaxPro.NET是一个强大的JavaScript库,专门用于在ASP.NET环境中实现异步JavaScript和XML(AJAX)功能。这个压缩包中的内容可能包含了一个使用AjaxPro.NET框架实现的简单而高效的树形结构示例。树形结构在Web应用...

Global site tag (gtag.js) - Google Analytics