ASP.net 2005 Treeview 无限分类非地递归终极解决方案

原创 2006年06月18日 23:40:00

这几天在写HRM的时候 这问题搞了我两天,哈哈!开始在使用Google 找了半天都是一堆垃圾,都是使用算法的较多, 后来就去了www.asp.net 找到点启示。

好了废话多说无用。

首先表结构如下 表名 Test

 

写个存储过程 GetTreeview

这个不用我说了吧下面用到

 

为了速度缓存DataTable

        Public Function GetTreeTable() As DataTable

                Dim dt As New DataTable()

                dt = HttpContext.Current.Cache("Treeview")

                If dt Is Nothing Then

                    Dim Conn As New SqlConnection

                    Dim clsConnDatabase As New ConnectionDatabase

                    Conn = clsConnDatabase.ConnDatabase

 

                    Dim Command As New SqlCommand

                    Command.Connection = Conn

                    Command.CommandText = "GetTreeview"

                    Command.CommandType = CommandType.StoredProcedure

                    Command.ExecuteNonQuery()

 

                    Dim da As New SqlDataAdapter(Command)

                    dt = New DataTable()

                    da.Fill(dt)

                    HttpContext.Current.Cache.Insert("Treeview", dt)

                End If

                Return dt

            End Function

 

这里是主要阿

Public Sub PopulateNodes(ByVal nodes As TreeNodeCollection, Optional ByVal intParentID As Int32 = 0)

                Dim dt As New DataTable()

                dt = clsWebForms.GetTreeTable()

                Dim strExpression As String

strExpression = "[parentID] = " & intParentID

                Dim foundRows() As DataRow

                foundRows = dt.Select(strExpression)

 

                Dim I As Integer

                For I = 0 To foundRows.GetUpperBound(0)

                    Dim tn As New TreeNode()

                    tn.Text = foundRows(I).Item(TableName).ToString()

                    tn.Value = foundRows(I).Item("ID").ToString()

                    Dim dr() As DataRow

                    dr = dt.Select("[parentID] = " & tn.Value)

                    If dr.GetUpperBound(0) > -1 Then

                        tn.PopulateOnDemand = True

                    End If

                    nodes.Add(tn)

                Next

            End Sub

 

建立WebForm 放入Treeview

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not Page.IsPostBack Then   

PopulateNodes(TreeView1.Nodes, 0)

        End If

    End Sub

 

    Protected Sub TreeView1_TreeNodePopulate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles TreeView1.TreeNodePopulate

                PopulateNodes(e.Node.ChildNodes, e.Node.Value)

    End Sub

至于速度我没测试,如果大家有兴趣帮忙测测。

 

题外话(突然发现自己老了,26岁了写了快7年的程序了 一直使用VB各种版本,   MasmMS宏汇编语言)在VB 6.0 时代 2000 年左右建立了 VB 编程为主的个人主页编程浪子) by Shadow

ASP.NET-Treeview-递归生成部门树

  • 2013年07月05日 21:21
  • 26KB
  • 下载

asp.net treeview递归写法

这是我在网上摘抄的一个递归添加的方法。asp页面添加的treeview名称为TreeVieww1,绑定数据库后得到的DataTable名称为dt,需要在treeview中绑定的节点Text为"name...
  • w809026418
  • w809026418
  • 2009年06月12日 09:00
  • 2524

ASP.net 2005 Treeview 无限分类非地递归终极解决方案

这几天在写HRM的时候 这问题搞了我两天,哈哈!开始在使用Google 找了半天都是一堆垃圾,都是使用算法的较多, 后来就去了www.asp.net 找到点启示。好了废话多说无用。首先表结构如下 表名...
  • xbf321
  • xbf321
  • 2006年12月06日 11:16
  • 854

ASP.net 2005 Treeview 无限分类非递归终极解决方案

    ASP.net 2005 Treeview 无限分类非递归终极解决方案这几天在写HRM的时候 这问题搞了我两天,哈哈!开始在使用Google 找了半天都是一堆垃圾,都是使用算法的较多, 后来就...
  • cyz1980
  • cyz1980
  • 2006年06月19日 18:02
  • 1235

ASP.NET 2005 Treeview终极解决方案

  • zgqtxwd
  • zgqtxwd
  • 2008年05月01日 03:07
  • 83

Treeview的递归绑定

1using System;  2using System.Collections;  3using System.ComponentModel;  4using System.Data;  5usi...
  • wszhoho
  • wszhoho
  • 2007年03月22日 17:36
  • 594

.net服务器控件使用总结之TreeView

使用TreeView控件有三种方式 方式一:在控件属性里面写死。       应用场景:在数据一成不变的情况下,可以使用。实际项目中极少使用。 方式二:通过xml文件读取目录。       应...
  • yuchang2012
  • yuchang2012
  • 2013年10月18日 14:59
  • 1001

ASP.NET 2.0中TreeView递归遍历及设置结点展开算法

 一、入口参数:tnode:TreeNode  //树的根节点condition:string //展开条件二、返回值:true:已找到符合条件的结点false:未找到符合条件的结点三、基本思想:1....
  • jelink
  • jelink
  • 2006年08月30日 15:34
  • 2169

ASP.NET通过递归添加树(Treeview)

先来看看效果,基本上就是这样的。 所谓树,无非就是2点,第一个:根节点,第二:叶子节点,其中叶子节点中还可能有叶子节点,但是根节点始终只有一个。 下面贴上 各部分的代码 1.PAGE_LOA...
  • yangliweng2
  • yangliweng2
  • 2014年12月23日 21:51
  • 436

Asp.net中Treeview终极解决方案!!

最近在做权限模块,挺头痛的东西。不包括权限部分的业务,还包括权限部分的界面实现。由于采用了微软的Treeview控件来分配权限,所以碰到网上热烈讨论的有关TreeView操作的刷新问题,在众位先人和同...
  • baron
  • baron
  • 2005年03月12日 16:04
  • 2461
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.net 2005 Treeview 无限分类非地递归终极解决方案
举报原因:
原因补充:

(最多只允许输入30个字)