ASP.NET 2005 Treeview终极解决方案

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

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

时间: 2024-10-06 04:07:49

ASP.NET 2005 Treeview终极解决方案的相关文章

ASP.NET 2005 Treeview终极解决方案_实用技巧

这几天在写HRM的时候 这问题搞了我两天,开始在使用Google 找了半天都是一堆垃圾,都是使用算法的较多, 后来就去了的msdn.yesky.com 找到点启示. 好了废话多说无用. 首先表结构如下 表名 Test 写个存储过程 GetTreeview 这个不用我说了吧下面用到 为了速度缓存DataTable Public Function GetTreeTable() As DataTable Dim dt As New DataTable() dt = HttpContext.Curren

Asp.net中Treeview终极解决方案

asp.net|treeview|解决 最近在做权限模块,挺头痛的东西.不包括权限部分的业务,还包括权限部分的界面实现.由于采用了微软的Treeview控件来分配权限,所以碰到网上热烈讨论的有关TreeView操作的刷新问题,在众位先人和同事的帮助下,终于使Treeview的问题得到了较好的解决.1.前台控制展开,收缩,Check/UnCheck,后台控制SelectedIndexChanged.解决方法:将autopostback设置成false;  在body里添加  <body  > 

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

asp.net|treeview|递归|解决 为了速度缓存DataTable         Public Function GetTreeTable() As DataTable                 Dim dt As New DataTable()                 dt = HttpContext.Current.Cache("Treeview")                 If dt Is Nothing Then                

静态页转换平台(StaticPol)-静态页生成终极解决方案

为什么要生成静态页? 这个问题咱们就不多说了,他的优点只有一个,大大提高网站性能,对于数据量大.访问量大的网站不采用静态页输出的解决方案,恐怕真受不了了.缺点就不说了,一 大堆....不过单这一个优点就值得我们研究一番.下面咱们讨论一下静态页生成方案的常规处理方式和 StaticPol 灵活的处理方式,对他们进行一个比较. 说他是一个平台的理由: 常规方式:在每个程序中为静态页生成写相应的模块(程序),执行对应的更新,而且一般都是手动更新(首页.分类页.信息页),好麻烦,即使是定时更新,也要写

UI开发的终极解决方案

呵呵,有点标题党的意思,但是如果你正在寻找UI解决方案,你一定不会白来的. 虽然没有直接开发前台界面,但是好呆也看了这么些年,碰到许多关于UI的问题: UI中JS的引入与顺序,JS合并的问题 UI中css的引入与顺序,CSS合并的问题 UI中碰到性能问题时的影响范围,比如:一个树出现问题,要改动许多用到树的地方 代码重复的问题,同样的内容在许多地方都有,如果要改动就要改动许多个地方 整体布局调整困难的问题 开发效率的问题 执行效率的问题,前台响应要求速度更快 集群的问题 国际化的问题 ... 这

javascript如何调用C#后代码中的过程 和ASP.NET调用JS乱码解决方案

asp.net|javascript|js|过程|解决 javascript如何调用C#后代码中的过程 和ASP.NET调用JS乱码解决方案  +++++++++++++++++第一种情况: 1.后台方法: protected string CsharpVoid(string strCC){  return strCC; } 2.javascript 调用<script  language="javascript">   var s = "<%=Csharp

ASP.NET中TreeView控件使用小结

asp.net|treeview|控件 中国IT动力,最新最全的IT技术教程最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 未整理篇 | 技术讨论 ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql 服务器 Win2000

ASP.NET母版页TreeView导航链接问题

最近在网上找一些关于"ASP.NET母版页TreeView导航链接问题"相关资料,很多人都碰到跟我类似的问题,于是我就抽了点时间自己调试一下这个问题了. 首先描述一下我的问题: 当把TreeView控件放到母版页时,在做页面导航链接的时候,TreeView控件的菜单状态一直保持为最初设置的状态,并不会像点击某个页面跳转后还仍然保持点击的那个状态. 最简单的方式,当然是用框架了.问题虽然很容易解决,可我还是想琢磨它一下,于是就写了个调试程序来分享一下.程序比较粗糙,能达到我想要的效果就可

JS控件ASP.NET的treeview控件全选或者取消

 本篇文章主要是对JS控件ASP.NET的treeview控件全选或者取消的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 代码如下: <script language="javascript">    /*    函数名称:CheckNode(currentNode).ParentNode(currentNode).ChildNode(currentNode)      函数功能:实现带checkbox的treeview中    1.选中父结点其子结点也