ASP.NET 2005 Treeview终极解决方案

2023-07-08 10:41 33次浏览 问答

这几天在写HRM的时候 这问题搞了我两天,开始在使用Google 找了半天都是一堆垃圾,都是使用算法的较多, 后来就去了的msdn。yesky。com 找到点启示。 好了废话多说无用。
首先表结构如下 表名 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
至于速度我没测试,如果大家有兴趣帮忙测测。

相关推荐