作者:xiangwa 出处:CSDN
前日,根据客户需要,要根据如下的表动态生成如下的菜单:表中的数据是动态更新的。
我们平时IEWebContr来做菜单时都是在html中直接输入,也就是说是静态的,现在要做成动态的,而且菜单级数不定,怎么来实现呢?笔者通过研究发现,用IEWebContr来做菜单时,菜单项可以直接输入,也可以用如下的方法指定从某一个文件中读取菜单项:
1<iewc:treeview id="Treeview1" name="Treeview1" runat="server">
2<iewc:treenode expanded="True" id="Treenode1" runat="server" text="信息类别列表" treenodesrc="menuone.txt"></iewc:treenode>
3</iewc:treeview>
其中menuone.txt的内容如下:
1<treenodes>
2<treenode ?="" navigateurl="xxcb_add.aspx?classname=蔬菜&classid=01" target="main1" text="蔬菜">
3<treenode ??="" navigateurl="xxcb_add.aspx?classname=白菜&classid=0101" target="main1" text="白菜"></treenode>
4<treenode ??="" navigateurl="xxcb_add.aspx?classname=萝卜&classid=0102" target="main1" text="萝卜"></treenode>
5<treenode ??="" navigateurl="xxcb_add.aspx?classname=黄花菜&classid=0103" target="main1" text="黄花菜"></treenode>
6</treenode>
7<treenode ?="" navigateurl="xxcb_add.aspx?classname=水果&classid=02" target="main1" text="水果">
8<treenode ?="" navigateurl="xxcb_add.aspx?classname=苹果&classid=0201" target="main1" text="苹果">
9<treenode ??="" navigateurl="xxcb_add.aspx?classname=红富士&classid=020101" target="main1" text="红富士"></treenode>
10<treenode ??="" navigateurl="xxcb_add.aspx?classname=其它苹果&classid=020102" target="main1" text="其它苹果"></treenode>
11</treenode>
12<treenode ??="" navigateurl="xxcb_add.aspx?classname=桃子&classid=0202" target="main1" text="桃子"></treenode>
13<treenode ??="" navigateurl="xxcb_add.aspx?classname=荔枝&classid=0203" target="main1" text="荔枝"></treenode>
14</treenode>
15<treenode ?="" navigateurl="xxcb_add.aspx?classname=粮食&classid=03" target="main1" text="粮食">
16<treenode ??="" navigateurl="xxcb_add.aspx?classname=大米&classid=0301" target="main1" text="大米"></treenode>
17<treenode ??="" navigateurl="xxcb_add.aspx?classname=玉米&classid=0302" target="main1" text="玉米"></treenode>
18</treenode>
19</treenodes>
现在的问题变成了如何将数据表根据“类别号”修改menuone.txt文件。将该过程放在对数据表修改后进行。下面是根据表的内容生成menuone.txt的源代码:
Imports System.IO
Dim txtwriter As StreamWriter
txtwriter = File.CreateText(Server.MapPathstrpath ("\menuone.txt"))
txtwriter.WriteLine("
1<treenodes>")
2
3Dim objConn As OleDbConnection
4Dim objCmd As OleDbCommand
5Dim objRead As OleDbDataReader
6Dim strSQL, strDSN As String
7Dim strid, strname, strid1, strname1 As String
8Dim strand As String
9strand = "&"
10
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就按要求生成了菜单源文件。