学院首页>网络编程>ASP.NET>使用递归从数据库读取数据来动态建立菜单

使用递归从数据库读取数据来动态建立菜单

作者: 来源: 添加时间:2006-5-21 19:56:55

‘////////////////////////////////////////////////////////////////////////////////////

‘在代码中实现这种菜单项的添加和菜单的建立

‘//////////////////////////////////////////////////////////////////////////////////

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")

  Me.DataGrid1.DataSource = ds

  Me.DataGrid1.DataMember = "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

   Try

mi = New mymenuitem(r.Item("MenText"), "1")

m.MenuItems.Add(mi)

   Catch ex As Exception

MessageBox.Show(ex.ToString)

   End Try

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

   mi = New mymenuitem(r.Item("MenText"), "2")

   item.MenuItems.Add(mi)

  End If

  Dim r2 As DataRow

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

  addmenuitem(r2, mi)

  Next

End Sub

第 2 页,共 2 页 [1] [2]
站内搜索