技术开发 频道

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

【IT168技术文档】

这几天在写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

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

建立WebForm 放入Treeview
0
相关文章