广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    ASP.NET 2005 Treeview终极解决方案

    2018-04-16 10:57:04 次阅读 稿源:互联网
    广告
     这几天在写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

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

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告