前日,根据客户需要,要根据如下的表动态生成如下的菜单:表中的数据是动态更新的。

我们平时IEWebContr来做菜单时都是在html中直接输入,也就是说是静态的,现在要做成动态的,而且菜单级数不定,怎么来实现呢?笔者通过研究发现,用 IEWebContr来做菜单时,菜单项可以直接输入,也可以用如下的方法指定从某一个文件中读取菜单项:
〈iewc:TreeView runat="server" ID="Treeview1" NAME="Treeview1"〉
〈iewc:TreeNode id="Treenode1" runat="server" TreeNodeSrc="menuone.txt" Expanded="True" Text="信息类别列表" 〉〈/iewc:TreeNode〉
〈/iewc:TreeView〉
其中menuone.txt的内容如下:
〈TREENODES〉
〈treenode text='蔬菜' NavigateUrl='xxcb_add.aspx?classname=蔬菜&classid=01'? Target='main1'〉
〈treenode text='白菜' NavigateUrl='xxcb_add.aspx?classname=白菜&classid=0101'?? Target='main1'/〉
〈treenode text='萝卜' NavigateUrl='xxcb_add.aspx?classname=萝卜&classid=0102'?? Target='main1'/〉
〈treenode text='黄花菜' NavigateUrl='xxcb_add.aspx?classname=黄花菜&classid=0103'?? Target='main1'/〉
〈/treenode〉
〈treenode text='水果' NavigateUrl='xxcb_add.aspx?classname=水果&classid=02'? Target='main1'〉
〈treenode text='苹果' NavigateUrl='xxcb_add.aspx?classname=苹果&classid=0201'? Target='main1'〉
〈treenode text='红富士' NavigateUrl='xxcb_add.aspx?classname=红富士&classid=020101'?? Target='main1'/〉
〈treenode text='其它苹果' NavigateUrl='xxcb_add.aspx?classname=其它苹果&classid=020102'?? Target='main1'/〉
〈/treenode〉
〈treenode text='桃子' NavigateUrl='xxcb_add.aspx?classname=桃子&classid=0202'?? Target='main1'/〉
〈treenode text='荔枝' NavigateUrl='xxcb_add.aspx?classname=荔枝&classid=0203'?? Target='main1'/〉
〈/treenode〉
〈treenode text='粮食' NavigateUrl='xxcb_add.aspx?classname=粮食&classid=03'? Target='main1'〉
〈treenode text='大米' NavigateUrl='xxcb_add.aspx?classname=大米&classid=0301'?? Target='main1'/〉
〈treenode text='玉米' NavigateUrl='xxcb_add.aspx?classname=玉米&classid=0302'?? Target='main1'/〉
〈/treenode〉
〈/TREENODES〉
&n bsp;现在的问题变成了如何将数据表根据“类别号”修改menuone.txt文件。将该过程放在对数据表修改后进行。下面是根据表的内容生成menuone.txt的源代码:
Imports System.IO
Dim txtwriter As StreamWriter
txtwriter = File.CreateText(Server.MapPath("menuone.txt"))
txtwriter.WriteLine("
1<treenodes>")
2
3
4Dim objConn As OleDbConnection
5Dim objCmd As OleDbCommand
6Dim objRead As OleDbDataReader
7Dim strSQL, strDSN As String
8Dim strid, strname, strid1, strname1 As String
9Dim strand As String
10strand = "&"
11
12Dim i, j, k, m As Integer
13i = 0
14j = 0
15k = 0
16m = 0
17
18strSQL = "select * from class order by classid "
19
20objConn = New OleDbConnection(ConfigurationSettings.AppSettings("connString"))
21objCmd = New OleDbCommand(strSQL, objConn)
22objCmd.Connection.Open()
23objRead = objCmd.ExecuteReader()
24
25While objRead.Read()
26
27If j = 0 Then
28j = Len(Trim(objRead.Item("classid")))
29Else
30strid = strid1
31strname = strname1
32i = Len(Trim(objRead.Item("classid")))
33
34k = i - j
35
36Select Case k
37Case Is > 0
38txtwriter.WriteLine("<treenode navigateurl='adminclass_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "' target="main2" text='" & strname & "'>")
39Case Is = 0
40txtwriter.WriteLine("<treenode navigateurl='adminclass_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "' target="main2" text='" & strname & "'></treenode>")
41Case Is < 0
42txtwriter.WriteLine("<treenode navigateurl='adminclass_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "' target="main2" text='" & strname & "'></treenode>")
43'txtwriter.WriteLine("</treenode>")
44
45m = k
46While m < 0
47txtwriter.WriteLine("")
48m = m + 2
49End While
50
51End Select
52
53j = Len(Trim(objRead.Item("classid")))
54
55End If
56
57strid1 = Trim(objRead.Item("classid"))
58strname1 = Trim(objRead.Item("classname"))
59
60End While
61
62'strid = strid1
63'strname = strname1
64i = Len(strid)
65k = j - i
66strid = strid1
67strname = strname1
68Select Case k
69Case Is > 0
70txtwriter.WriteLine("<treenode navigateurl='adminclass_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "' target="main2" text='" & strname & "'></treenode>")
71'txtwriter.WriteLine("")
72
73m = Len(strid) / 2
74
75While m > 1
76txtwriter.WriteLine("")
77m = m - 1
78End While
79Case Is = 0
80txtwriter.WriteLine("<treenode navigateurl='adminclass_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "' target="main2" text='" & strname & "'></treenode>")
81'txtwriter.WriteLine("")
82m = Len(strid) / 2
83
84While m > 1
85txtwriter.WriteLine("")
86m = m - 1
87End While
88Case Is <= 0
89txtwriter.WriteLine("<treenode navigateurl='adminclass_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "' target="main2" text='" & strname & "'></treenode>")
90'txtwriter.WriteLine("")
91
92m = Len(strid) / 2
93
94While m > 1
95txtwriter.WriteLine("")
96m = m - 1
97End While
98
99End Select
100txtwriter.WriteLine("</treenodes>
")
txtwriter.Close()
End Sub
Sub creatmenuone(ByVal strpath As String)
Dim txtwriter As StreamWriter
txtwriter = File.CreateText(strpath + ("\..\menuone.txt"))
txtwriter.WriteLine("
1<treenodes>")
2
3
4Dim objConn As OleDbConnection
5Dim objCmd As OleDbCommand
6Dim objRead As OleDbDataReader
7Dim strSQL, strDSN As String
8Dim strid, strname, strid1, strname1 As String
9Dim strand As String
10strand = "&"
11
12Dim i, j, k, m As Integer
13i = 0
14j = 0
15k = 0
16m = 0
17
18strSQL = "select * from class order by classid "
19
20objConn = New OleDbConnection(ConfigurationSettings.AppSettings("connString"))
21objCmd = New OleDbCommand(strSQL, objConn)
22objCmd.Connection.Open()
23objRead = objCmd.ExecuteReader()
24
25While objRead.Read()
26
27If j = 0 Then
28j = Len(Trim(objRead.Item("classid")))
29Else
30strid = strid1
31strname = strname1
32i = Len(Trim(objRead.Item("classid")))
33
34k = i - j
35
36Select Case k
37Case Is > 0
38txtwriter.WriteLine("<treenode navigateurl='xxcb_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "' target="main1" text='" & strname & "'>")
39Case Is = 0
40txtwriter.WriteLine("<treenode navigateurl='xxcb_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "' target="main1" text='" & strname & "'></treenode>")
41Case Is < 0
42txtwriter.WriteLine("<treenode navigateurl='xxcb_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "' target="main1" text='" & strname & "'></treenode>")
43'txtwriter.WriteLine("</treenode>")
44
45m = k
46While m < 0
47txtwriter.WriteLine("")
48m = m + 2
49End While
50
51End Select
52
53j = Len(Trim(objRead.Item("classid")))
54
55End If
56
57strid1 = Trim(objRead.Item("classid"))
58strname1 = Trim(objRead.Item("classname"))
59
60End While
61
62'strid = strid1
63'strname = strname1
64i = Len(strid)
65k = j - i
66strid = strid1
67strname = strname1
68Select Case k
69Case Is > 0
70txtwriter.WriteLine("<treenode navigateurl='xxcb_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "' target="main1" text='" & strname & "'></treenode>")
71'txtwriter.WriteLine("")
72
73m = Len(strid) / 2
74
75While m > 1
76txtwriter.WriteLine("")
77m = m - 1
78End While
79Case Is = 0
80txtwriter.WriteLine("<treenode navigateurl='xxcb_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "' target="main1" text='" & strname & "'></treenode>")
81'txtwriter.WriteLine("")
82m = Len(strid) / 2
83
84While m > 1
85txtwriter.WriteLine("")
86m = m - 1
87End While
88Case Is <= 0
89txtwriter.WriteLine("<treenode navigateurl='xxcb_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "' target="main1" text='" & strname & "'></treenode>")
90'txtwriter.WriteLine("")
91
92m = Len(strid) / 2
93
94While m > 1
95txtwriter.WriteLine("")
96m = m - 1
97End While
98
99End Select
100txtwriter.WriteLine("</treenodes>
")
txtwriter.Close()
这样menuone.txt就按要求生成了菜单源文件。
如有更好的办法,请与我联系谢谢。QQ:149592886