当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET 2005 Treeview终极解决方案

ASP.NET
asp.net(C#) 生成随机验证码的代码
C# 生成高质量缩略图程序—终极算法
iis的http 500内部服务器错误的解决
效控制C#中label输出文字的长度,自动换行
asp.net下生成99个不同的随机数
Asp.Net文本换行
Asp.Net中文本换行
asp.net 上传大文件解决方案
asp.net程序编译调试时偶尔出现访问被拒绝的错误的解决方法
控件开发时两种JS嵌入资源方式的使用方法
AspNetPager分页控件源代码(Version 4.2)
asp. net下使用foreach简化文本文件的访问。
asp.net下经典数据库记录分页代码
微软发布的Data Access Application Block的使用代码
如何在网站级别动态更改主题
asp.net下模态对话框关闭之后继续执行服务器端代码的问题
asp.net下利用JS实现对后台CS代码的调用方法
批量删除记录时如何实现全选方法总结
asp.net下OnClientClick的妙用!
[c#]asp.ent下开发中Tag的开发技巧

ASP.NET 2005 Treeview终极解决方案


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 94 ::
收藏到网摘: n/a

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

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