实现的效果如下:
具体实现代码如下:
default.aspx
1<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default4.aspx.vb" Inherits="Default4" %>
2
3
4
5 导航控件测试
6
7
8
32
33
default.aspx.vb
1Imports System
2Imports System.Data
3Imports System.Data.SqlClient
4Partial Class Default4Class Default4
5 Inherits System.Web.UI.Page
6 Public strConn, strSQL As String
7 Dim myConn As SqlConnection
8 Dim mydv As DataView
9 Dim i As Integer
10 Dim menunode As MenuItem
11 Protected Sub Page_Load()Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
12 strConn = System.Configuration.ConfigurationManager.AppSettings("connstring")
13 myConn = New SqlConnection(strConn)
14
15 If Not Page.IsPostBack Then
16 strSQL = "select * from menu "
17 mydv = GetDataView(strSQL, "menu")
18 mydv.RowFilter = "parentid=0"
19 For i = 0 To mydv.Count - 1
20 menunode = New MenuItem
21 menunode.Text = mydv.Item(i).Item("text")
22 menunode.Value = mydv.Item(i).Item("id")
23 menunode.Enabled = mydv.Item(i).Item("Enabled")
24 menunode.Target = mydv.Item(i).Item("Target")
25 menunode.NavigateUrl = mydv.Item(i).Item("url")
26 Menu1.Items.Add(menunode)
27 addnode(menunode, menunode.Value)
28 mydv.RowFilter = "parentid=0"
29 Next
30 End If
31 End Sub
32
33 Sub addnode()Sub addnode(ByVal pnode As MenuItem, ByVal pid As Integer)
34 Dim menunode As MenuItem
35 Dim j As Integer
36 mydv.RowFilter = "parentid=" & pid
37 For j = 0 To mydv.Count - 1
38 menunode = New MenuItem
39 menunode.Text = mydv.Item(j).Item("text")
40 menunode.Value = mydv.Item(j).Item("id")
41 menunode.Enabled = mydv.Item(j).Item("Enabled")
42 menunode.Target = mydv.Item(j).Item("Target")
43 menunode.NavigateUrl = mydv.Item(j).Item("url")
44 pnode.ChildItems.Add(menunode)
45 addnode(menunode, menunode.Value)
46 mydv.RowFilter = "parentid=" & pid
47 Next
48
49 End Sub
50
51 Function GetDataView()Function GetDataView(ByVal Sql As String, ByVal strTable As String) As DataView
52 Dim myDataAdapter As SqlDataAdapter
53 Dim myDataSet As DataSet
54 myConn.Open()
55 myDataAdapter = New SqlDataAdapter(Sql, myConn)
56 myConn.Close()
57 myDataSet = New DataSet
58 myDataAdapter.Fill(myDataSet, strTable)
59 GetDataView = New DataView(myDataSet.Tables(strTable))
60 End Function
61
62
63End Class
64
数据库结构如下:
上面实现的关键是:
1、addnode递归过程,实现下级节点的添加;
2、DataView的RowFilter属性,mydv.RowFilter = "parentid=" & pid,筛选出某节点的下级节点,进行添加。
以上代码,没有优化,也不一定是最好的,希望抛砖引玉!
来源:njypcmqj的blog