网站首页站长博客下载中心域名交易站长论坛域名主机免费电邮免费域名中文排行排名查询站长书库书籍教程下载
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
学院首页 网络编程 网页设计 图形图象 数 据 库 服 务 器 网络媒体 网络安全 个人专栏 站长CLUB 业界新闻 信息公告
 当前位置:首页 >> 网络编程 >> NET专区 >> 正文
公告通知
返回上级列表
资料搜索
相关文章
用户自定义控件的应用
c#.net常用函数和方法集
在VB中使用水晶报表的一种简易编
C#调用父类的父类的方法
浏览.NET Framework 2.0 类型库中
为.Text Blog 添加 计数器
编程实现邮件地址有效性检测 
VB/VB.NET/C#导出到Excel的方法
c#高性能在WEB端产生验证图片
用System.Web.Caching.Cache保存
使用递归从数据库读取数据来动态建立菜单
[ 来源:中国站长学院 | 作者:郁郁小蝎 | 时间:2005-6-28 10:04:49 | 浏览:人次 ]
收藏到新浪ViVi 收藏到365KEY 收藏到我摘  字号选择〖    〗/ 双击滚屏 单击停止  
表结构与内容

MenBh            MenText     Bhparent

 

0001             文件         

0002             编辑         

0005             打开          0001

0006             新建          0001

0011             access数据库  0006

0012             VFPDbf      0006

0013             剪切          0002

0014             复制          0002

0015            完全复制       0014

 

 

    

Private m As New MainMenu()

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim conn As New SqlConnection("server=localhost;uid=sa;pwd=;database=jiang")

        Dim cmd As New SqlCommand("select * from a_menu ", conn)

        Dim ds As New DataSet()

        Dim sqldpr As New SqlDataAdapter(cmd)

        sqldpr.Fill(ds, "menu")

        Me.DataGrid1.DataSource = ds.Tables("menu")

        '创建关系

        Dim dr As New DataRelation("self_menu", ds.Tables("menu").Columns("MenBh"), ds.Tables("menu").Columns("Bhparent"))

        ds.Relations.Add(dr)

        Dim r1 As DataRow

        '查找最高的菜单级别,也就是Bhparent列为空的行

        For Each r1 In ds.Tables("menu").Rows

            If r1.IsNull("Bhparent") Then

                addmenuitem(r1, Nothing)

            End If

        Next

        Me.Menu = m '指定主窗体菜单

    End Sub

    '递归函数

    Private Sub addmenuitem(ByVal r As DataRow, ByVal item As MenuItem)

        Dim mi As MenuItem

        '如果是最外层菜单,要直接添加

        If item Is Nothing Then

            mi = m.MenuItems.Add(r.Item("MenText"))

        Else '如果是下级菜单要在菜单项的上级添加

            mi = item.MenuItems.Add(r.Item("MenText"))

        End If

        Dim r2 As DataRow

        For Each r2 In r.GetChildRows("self_menu")

            addmenuitem(r2, mi)

        Next

    End Sub

'--------------------------------------------------------一种方法的改进

/////////////////////////////////////////////////////////////////////////////////////

继承自menuitem的类

/////////////////////////////////////////////////////////////////////////////////////

Public Class mymenuitem

Inherits System.Windows.Forms.MenuItem

 

Public Sub New(ByVal s As String, ByVal tag As String)

        MyBase.New()

        Me.Text = s

        m_tag = tag

    End Sub

    Private m_tag As String

    Public Property tag() As String

        Get

            Return m_tag

        End Get

        Set(ByVal Value As String)

            m_tag = Value

        End Set

End Property

  End class

本新闻共2页,当前在第1页  1  2  


[发送给好友]  [打印本页]  [关闭窗口]  [返回顶部]   转载请注明来源:http://edu.chinaz.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
栏目编辑: 设计风 责任编辑: 设计风,设计风
原始作者: 郁郁小蝎 录入时间: 2005-6-28 10:04:49
信息来源: 中国站长学院 投稿信箱: Edu#chinaz.com
设为首页 - 加入收藏 - 关于我们 - 广告服务 - 版权申明 - 友情链接 - 联系方式 - 总编信箱 - 会员投稿