asp.net2.0 treeview控件用数据表做为数据源实现n级动态菜单

转载 2007年09月18日 18:10:00
  最近做个产品展示网站,本来打算treeview和menu控件数据源用sitemap来实现,但是发现新增产品信息的发布页需要有个 dropdownlist来读取原有的菜单分类,想不出ddl和sitemap如何关联,所以还是改用数据库做为数据源了,参考了网上一些资料,终于实现 treeview的n级动态菜单,写下来做个记录。

写一个递归函数。

vb代码:
程序代码 程序代码

Public Sub PopulateNodes(ByVal nodes As TreeNodeCollection, Optional ByVal intParentID As Int32 = 0)
        Dim showmenu As New ClassLibrary.Jkdata.JkDataBasic ‘创建一个新的类对象
        Dim dt As New DataTable()
        dt = showmenu.GetProduct_Class  ‘获得业务层返回的datatable
        Dim strExpression As String
        strExpression = "[UpID] = " & intParentID
        Dim foundRows() As DataRow
        foundRows = dt.Select(strExpression)
        Dim I As Integer
        Dim PassID As Integer
        For I = 0 To foundRows.GetUpperBound(0)
            Dim tn As New TreeNode()
            tn.Text = foundRows(I).Item("ClassName").ToString()
            tn.Value = foundRows(I).Item("ID").ToString()
            If foundRows(I).Item("UpID") = 0 Then
                tn.NavigateUrl = foundRows(I).Item("Url").ToString‘父分类的页面连接
            Else
                PassID = Convert.ToInt32(foundRows(I).Item("ID"))
                tn.NavigateUrl = foundRows(I).Item("Url") + "?classid=" + PassID.ToString ‘子分类的页面连接含参数传递

            End If

            Dim dr() As DataRow
            dr = dt.Select("[UpID] = " & tn.Value)
            If dr.GetUpperBound(0) > -1 Then
                tn.PopulateOnDemand = True
            End If
            nodes.Add(tn)
        Next
    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

Page_Load事件中调用函数绑定数据:
程序代码 程序代码

    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


aspx页面:
程序代码 程序代码

         <asp:TreeView ID="TreeView1" runat="server" >
         </asp:TreeView>


数据库字段:

ID                自动编号  
UpID            数字
ClassName  文本
Url               文本

最后效果图:




 注:本文转自http://www.morock.net/blog/article.asp?id=76

TreeView树形菜单绑定

前台:
  • qq_31971935
  • qq_31971935
  • 2015年10月13日 10:48
  • 1407

自定义控件---动态无限级生成 级联comboBox 和 treeView

开始 -〉新建 -〉新建项目 -〉“Windows窗体控件库” 名称栏 里 改为: myControl1 贴上下面的代码: using System; using System.Collectio...
  • resigner
  • resigner
  • 2014年02月24日 13:49
  • 1679

TreeView实现主菜单功能

TreeView实现主菜单功能     软件在菜单MenuItem中,设置了软件的各项功能,以及启动相应模块。为了加大软件的灵活性,我们还可以将主菜单的项目,转变为TreeView,通过点击Tre...
  • lyhoo163
  • lyhoo163
  • 2015年01月03日 14:25
  • 2754

利用多叉树实现Ext JS中的无限级树形菜单(一种构建多级有序树形结构JSON的方法

一、问题研究的背景和意义   目前在Web应用程序开发领域,Ext JS框架已经逐渐被广泛使用,它是富客户端开发中出类拔萃的框架之一。在Ext的UI控件中,树形控件无疑是最为常用的控件之一,它...
  • youyou_yo
  • youyou_yo
  • 2015年07月29日 22:00
  • 746

读取XML文件动态绑定TreeView控件练习题

题目三:读取XML文件动态绑定TreeView控件 一、语言和环境 A、实现语言  C# B、环境要求  Visual Studio 2012 二、功能要求 现使用....
  • baidu_36074048
  • baidu_36074048
  • 2017年03月12日 16:18
  • 884

Bootstrap树形菜单插件TreeView.js使用方法详解

Bootstrap树形菜单插件TreeView.js使用方法详解
  • educast
  • educast
  • 2016年12月14日 14:48
  • 16206

ASP.NET2.0 菜单控件menu的动态静态用法

利用 ASP.NET Menu 控件,可以开发 ASP.NET 网页的静态和动态显示菜单。您可以在 Menu 控件中直接配置其内容,也可通过将该控件绑定到数据源的方式来指定其内容。 无需编写任何...
  • GoodShot
  • GoodShot
  • 2013年09月18日 12:03
  • 1589

[转] QT 在TreeView中增加右键菜单功能

转自: http://blog.csdn.net/liukang325/article/details/22734735
  • hailmy
  • hailmy
  • 2014年06月03日 09:39
  • 1004

C# TreeView控件动态组树(可控制节点级别)

需求分析: 面对如此“强(wu)大(yu)”的需求,本菜鸟也是想尽办法做封装,来帮助深陷huohai的亲们。。我们的查询界面变成了树+下拉框+复选框,每个界面都有树,我就索性把树封装了,...
  • u012904383
  • u012904383
  • 2016年04月03日 22:48
  • 2063

Spring中基于注解的动态切换数据源方法

Spring中基于注解的动态切换数据源方法  主要思路:采用aop方式切入dao方法,为不同dao操作提供不同的数据源配置。 实现方法: 1.AOP类实现注解 a.注解接口 @R...
  • gaoqiao1988
  • gaoqiao1988
  • 2015年03月27日 14:55
  • 1588
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net2.0 treeview控件用数据表做为数据源实现n级动态菜单
举报原因:
原因补充:

(最多只允许输入30个字)