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

asp.net|treeview|递归|解决

为了速度缓存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各种版本, 及  Masm(MS宏汇编语言)在VB 6.0 时代 2000 年左右建立了 以VB 编程为主的个人主页编程浪子) by Shadow

注:本文转自http://blog.csdn.net/shadowsky/archive/2006/06/18/811461.aspx

这几天在写HRM的时候 这问题搞了我两天,哈哈!开始在使用Google 找了半天都是一堆垃圾,都是使用算法的较多, 后来就去了www.asp.net 找到点启示。好了废话多说无用。首先表结构如下 表名 Test写个存储过程 GetTreeview这个不用我说了吧下面用到  

时间: 2024-09-18 02:16:20

ASP.net 2005 Treeview 无限分类非地递归终极解决方案的相关文章

thinkphp实现无限分类(使用递归)_javascript技巧

本文实例为大家分享了thinkphp实现无限分类的详细代码,希望对大家学习无限分类有所启发. 数据库:test 数据表:(tp_category): Common/conf/config.php 'DB_CONFIG2' => array( 'db_type' => 'mysql', 'db_user' => 'root', 'db_pwd' => '', 'db_host' => 'localhost', 'db_port' => '3306', 'db_name'

TreeView 无限分类

这次为了作个帮助文件,弄的我火大,你说好好的用html不是很好,非要用.net来写一个,诶,还要无限分类. 因为当初没接触过,所以用了一天的时间去查阅了很多同类文章,可惜都看不太懂,所以决定自己研究了一下. TreeView 支持从XML文件读取,那我就写一个Xml文件,让他读就是了,这个就简单多了,到了分类这里用递归来进行,嘿嘿,当时没想到,所以就再次调用了一个函数,比较省力嘛,代码明天贴上来,现在在家了:P

ASP.NET 2005 Treeview终极解决方案

这几天在写HRM的时候 这问题搞了我两天,开始在使用Google 找了半天都是一堆垃圾,都是使用算法的较多, 后来就去了的msdn.yesky.com 找到点启示. 好了废话多说无用. 首先表结构如下 表名 Test 写个存储过程 GetTreeview 这个不用我说了吧下面用到 为了速度缓存DataTable Public Function GetTreeTable() As DataTable Dim dt As New DataTable() dt = HttpContext.Curren

ASP.NET 2005 Treeview终极解决方案_实用技巧

这几天在写HRM的时候 这问题搞了我两天,开始在使用Google 找了半天都是一堆垃圾,都是使用算法的较多, 后来就去了的msdn.yesky.com 找到点启示. 好了废话多说无用. 首先表结构如下 表名 Test 写个存储过程 GetTreeview 这个不用我说了吧下面用到 为了速度缓存DataTable Public Function GetTreeTable() As DataTable Dim dt As New DataTable() dt = HttpContext.Curren

ASP.NET无限分类

asp.net 开始在网上查找到asp的无限分类,但是asp.net的几乎找不到,找到的也是跟TreeView结合起来的.找到asp版本的代码有几种,原来都差不多是采用递归算法.其中表结构都是如下:表名称是ClassNameid                     主键sid                    对应的父类的idClassName        对应类别的名称.代码段一:1function loadNextType(upid,rank)2    dim rs3    set

php实现无限级分类查询(递归、非递归)_php技巧

做PHP这么长时间,发现后台管理系统不可少的一个应用模块就是对栏目的分类,一般情况下栏目都要做成是无限级的,也就是说每个栏目理论上都可以添加子栏目.在我看来这种情况处理起来整体上说也不是很复杂,唯一一个相对来说较难的点是无限级栏目的查询. 下面就这种情况我来向大家做一个简单的介绍,对于这种无限级栏目的查询一般情况下有两种方式,其中一种就是使用栈的机制,另一种是使用递归函数的方式(当然递归函数实现机制也是借助于栈来实现的).就这两种方式下面我们分别介绍. 递归函数实现方式 上面提到,递归函数的也是

php实现递归与无限分类的方法_php技巧

本文实例讲述了php实现递归与无限分类的方法,分享给大家供大家参考.具体实现方法如下: <?php echo "<pre>"; $area = array( array('id'=>1,'area'=>'北京','pid'=>0), array('id'=>2,'area'=>'广西','pid'=>0), array('id'=>3,'area'=>'广东','pid'=>0), array('id'=>4

php递归实现无限分类的方法_php技巧

本文实例讲述了php递归实现无限分类的方法.分享给大家供大家参考.具体如下: <?php $rows = array( array( 'id' => 1, 'name' => 'dev', 'parentid' => 0 ), array( 'id' => 2, 'name' => 'php', 'parentid' => 1 ), array( 'id' => 3, 'name' => 'smarty', 'parentid' => 2 ),

Asp.Net实现无限分类生成表格的方法(后台自定义输出table)_实用技巧

本文实例讲述了Asp.Net实现无限分类生成表格的方法.分享给大家供大家参考,具体如下: 数据结构 monitor_group monitor_grp_id      monitor_grp_name     parent_id       level               childCount       orderby [int,自动递增]           [nvarchar,not null]      [int,not null]  [int,not null]   [int,