共享社区

首页 » 编程技巧共享 » WEB编程相关文章 » asp.net TreeView 终极解决方案
abc - 2008-5-12 22:00:00
首先表结构如下 表名 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
1
查看完整版本: asp.net TreeView 终极解决方案