ASP.net 2005 Treeview 无限分类非递归终极解决方案
这几天在写HRM的时候 这问题搞了我两天,哈哈!开始在使用Google 找了半天都是一堆垃圾,都是使用算法的较多, 后来就去了www.asp.net 找到点启示。
好了废话多说无用。
首先表结构如下 表名 Test
<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 233.25pt; HEIGHT: 95.25pt" type="#_x0000_t75"><imagedata src="file:///D:%5CDOCUME~1%5CJIANGJ~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.jpg" o:title="Snap1"></imagedata></shape>
写个存储过程 GetTreeview
这个不用我说了吧下面用到
为了速度缓存DataTable
Public Function GetTreeTable() As DataTable
Dim dt As New DataTable()
dt = HttpContext.Current.Cache("Treeview")
If dt Is Nothing Then
Dim <state w:st="on"><place w:st="on">Conn</place></state>As New SqlConnection
Dim clsConnDatabase As New ConnectionDatabase
<state w:st="on"><place w:st="on">Conn</place></state> = clsConnDatabase.ConnDatabase
Dim Command As New SqlCommand
Command.Connection = <state w:st="on"><place w:st="on">Conn</place></state>
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
分享到:
相关推荐
Asp.net 2.0 Treeview 无限级无刷新示例
这是一个学习ASP.NET treeview控件的demo,通过递归生成一棵部门树。部门表结构在解决方案中。解压密码: 1435279215
asp.net无限级分类 TreeView
在asp.net(C#)中TreeView控件的数据绑定,本例子绑定是目录结构(即是文件夹),按目录等级来分层绑定的,用于目录管理,可自己添加功能代码实现指定文件夹的新建、名称修改,以及文档的上传、转移及各种管理。
asp.net TreeView 与 GridView 相结合管理无限极分类,本资源用javascript脚步实现选中离开后依然保持变色,直到选中另一个节点
asp.net 利用TreeView控件动态生成无限级树.rar
在asp.net中绑定treeview控件
这是一个关于ASP.NET中treeview控件用法的小程序!
ASP.NET 递归下载treeview
ASP.NET 中用TreeView实现树目录的实例
自定义 asp.net 中treeview 的click事件
asp.net中treeview与数据库实现动态连接,利用数据库动态添加树节点
asp.net 中的treeview进行一次性绑定数据库中所有的内容
ASP.NET中TreeView节点上移下移 实现无刷新效果
ASp.net treeView菜单列表
asp.net中treeview空间动态生成!! asp.net中treeview空间动态生成!! asp.net中treeview空间动态生成!! asp.net中treeview空间动态生成!! asp.net中treeview空间动态生成!!根据数据库信息层级生成树
vb.net中treeview节点的添加和删除
NET采开发ASP.NET Web应用程序的。其包含了四种IEWeb控件,这些Web控件通过提供Web访问者熟悉的用户界面,增强了ASP.NETWeb页面。Tree View Web控件就是其中之一。本文就是详述如何使用Tree View控件采生成树目录...