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

相关文章推荐

无限级分类(使用TreeView显示)

自己写的一个无限级分类,完成了添加和删除,更新有空再写吧 数据库脚本IF EXISTS(SELECT 1 FROM sys.databases WHERE NAME=Demo) DROP DATABA...
  • amandag
  • amandag
  • 2009年12月16日 21:05
  • 5999

20行代码打造MSDN无限及树形菜单(treeview)[原创]!

希望这篇文章能对大家有所帮助!http://blog.csdn.net/zlp8383178/树形菜单一直是网页中比较常见的列表表现形式,大家也一定有很多这方面的经验和教训,在此,我还是多罗嗦一句:)...

.Net MVC无限循环或无限递归

错误往往是service的相互引用之类的。 好好排查

ASP.NET 递归将分类绑定到 TreeView

原文地址:http://www.cnblogs.com/Ferry/archive/2010/12/14/1905283.html 创建表及插入模拟数据: CREATE TABLE...

asp.net无限级分类 TreeView

  • 2008年04月12日 22:43
  • 2KB
  • 下载

ASP.NET TreeView 递归绑定数据

187713732 asp.net 交流群,希望有更多的人可以加入,大家可以互相学习,帮助需要帮助的人,帮助刚入门的同行或即将入门的同行解决问题。DAL方法,BLL省略 public static L...

ASP.NET 读数据库绑定到 TreeView 递归方式

创建表及插入模拟数据: CREATE TABLE [sysMenuTree]( [NoteId] [decimal](18, 0) NOT ...

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

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

ASP递归无限级分类源码

  • 2009年10月09日 11:11
  • 643KB
  • 下载

javascript 深度递归引起的堆栈溢出,终极解决方案

var i = 0; function callback( ) { i++; document.writeln(i); if (i == 1000000000)...
  • phker
  • phker
  • 2012年08月21日 16:46
  • 9232
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.net 2005 Treeview 无限分类非地递归终极解决方案
举报原因:
原因补充:

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