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

转载 2007年09月15日 16:55:00

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

    最近做个产品展示网站,本来打算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

相关文章推荐

Asp.Net2.0新GridView控件使用

原文地址:http://www.cnblogs.com/blueocean/articles/555855.html 一、Gridview中的内容导出到Excel   在日常工作中,经常要将g...

ASP.NET2.0中Gridview中数据操作技巧

GridView经典删除操作,两种方法ASP.NET2.0中Gridview中数据操作技巧 asp.net2.0中新增的gridview控件,是十分强大的数据展示控件。   一、Gridvi...

asp.net2.0 gridview空数据时 仅显示列头

给GridView控件设计一个空数据模板(EmptDateTemplate)。 这个模板只在在绑定的数据项为0时才会显示。例子:   标签中间的部分,就是数据的场合, 原样显示一下列头的数据。...

asp.net2.0数据访问工具--DataSource

一、DataSource & ADO.Net     ADO.Net是微软先进的数据库访问技术,那它和DataSource控件相比有哪些区别呢?     1、ADO.Net是微软新一代的数据库访问...

多叉树结合JavaScript树形控件实现无限级树形菜单(一种构建多级有序树形结构JSON(或XML)数据源的方法)

多叉树结合JavaScript树形控件实现无限级树形菜单(一种构建多级有序树形结构JSON(或XML)数据源的方法) 一、问题研究的背景和意义 在Web应用程序开发领域,基于AJAX技术的...

ASP.net Menu控件动态添加菜单项实现权限控制

对于动态菜单生成,在很多具有权限控制的项目中非常常见。最近遇到一个需求就是不同用户具有不同权限,该权限是页面级的,所以需要根据不同用户的权限情况动态生成菜单项。        首先,我把菜单项中的内...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net2.0 treeview控件用数据表做为数据源实现n级动态菜单
举报原因:
原因补充:

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