ASP.NET中不定级动态菜单的实现
点击次数:25 次 发布日期:2008-11-26 13:48:48 作者:源代码网
|
源代码网推荐 源代码网推荐 前日,根据客户需要,要根据如下的表动态生成如下的菜单:表中的数据是动态更新的。 源代码网推荐 源代码网推荐 我们平时IEWebContr来做菜单时都是在html中直接输入,也就是说是静态的,现在要做成动态的,而且菜单级数不定,怎么来实现呢?笔者通过研究发现,用IEWebContr来做菜单时,菜单项可以直接输入,也可以用如下的方法指定从某一个文件中读取菜单项: 源代码网推荐 源代码网推荐
源代码网推荐 源代码网推荐
源代码网推荐 源代码网推荐 <iewc:TreeView runat="server" ID="Treeview1" NAME="Treeview1"> 源代码网推荐 <iewc:TreeNode id="Treenode1" runat="server" TreeNodeSrc="http://www.zzchn.com/edu/20080727/menuone.txt" Expanded="True" Text="信息类别列表"></iewc:TreeNode> 源代码网推荐 </iewc:TreeView> 源代码网推荐 源代码网推荐 其中http://www.zzchn.com/edu/20080727/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> 源代码网推荐 源代码网推荐 源代码网推荐 现在的问题变成了如何将数据表根据“类别号”修改http://www.zzchn.com/edu/20080727/menuone.txt文件。将该过程放在对数据表修改后进行。下面是根据表的内容生成http://www.zzchn.com/edu/20080727/menuone.txt的源代码: 源代码网推荐 源代码网推荐 源代码网推荐 Imports System.IO 源代码网推荐 Dim txtwriter As StreamWriter 源代码网推荐 txtwriter = File.CreateText(Server.MapPathstrpath ("http://www.zzchn.com/edu/20080727/menuone.txt")) 源代码网推荐 txtwriter.WriteLine("<TREENODES>") 源代码网推荐 源代码网推荐 Dim objConn As OleDbConnection 源代码网推荐 Dim objCmd As OleDbCommand 源代码网推荐 Dim objRead As OleDbDataReader 源代码网推荐 Dim strSQL, strDSN As String 源代码网推荐 Dim strid, strname, strid1, strname1 As String 源代码网推荐 Dim strand As String 源代码网推荐 strand = "&" 源代码网推荐 源代码网推荐 源代码网推荐 Dim i, j, k, m As Integer 源代码网推荐 i = 0 源代码网推荐 j = 0 源代码网推荐 k = 0 源代码网推荐 m = 0 源代码网推荐 源代码网推荐 strSQL = "select * from class order by classid " 源代码网推荐 源代码网推荐 objConn = New OleDbConnection(ConfigurationSettings.AppSettings("connString")) 源代码网推荐 objCmd = New OleDbCommand(strSQL, objConn) 源代码网推荐 objCmd.Connection.Open() 源代码网推荐 objRead = objCmd.ExecuteReader() 源代码网推荐 源代码网推荐 While objRead.Read() 源代码网推荐 源代码网推荐 If j = 0 Then 源代码网推荐 j = Len(Trim(objRead.Item("classid"))) 源代码网推荐 Else 源代码网推荐 strid = strid1 源代码网推荐 strname = strname1 源代码网推荐 i = Len(Trim(objRead.Item("classid"))) 源代码网推荐 源代码网推荐 k = i - j 源代码网推荐 源代码网推荐 Select Case k 源代码网推荐 Case Is > 0 源代码网推荐 txtwriter.WriteLine("<treenode text="" & strname & "" NavigateUrl="xxcb_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "" Target="main1">") 源代码网推荐 Case Is = 0 源代码网推荐 txtwriter.WriteLine("<treenode text="" & strname & "" NavigateUrl="xxcb_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "" Target="main1"/>") 源代码网推荐 Case Is < 0 源代码网推荐 txtwriter.WriteLine("<treenode text="" & strname & "" NavigateUrl="xxcb_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "" Target="main1"/>") 源代码网推荐 "txtwriter.WriteLine("</treenode>") 源代码网推荐 源代码网推荐 m = k 源代码网推荐 While m < 0 源代码网推荐 txtwriter.WriteLine("</treenode>") 源代码网推荐 m = m + 2 源代码网推荐 End While 源代码网推荐 源代码网推荐 End Select 源代码网推荐 源代码网推荐 j = Len(Trim(objRead.Item("classid"))) 源代码网推荐 源代码网推荐 End If 源代码网推荐 源代码网推荐 strid1 = Trim(objRead.Item("classid")) 源代码网推荐 strname1 = Trim(objRead.Item("classname")) 源代码网推荐 源代码网推荐 End While 源代码网推荐 源代码网推荐 "strid = strid1 源代码网推荐 "strname = strname1 源代码网推荐 i = Len(strid) 源代码网推荐 k = j - i 源代码网推荐 strid = strid1 源代码网推荐 strname = strname1 源代码网推荐 Select Case k 源代码网推荐 Case Is > 0 源代码网推荐 txtwriter.WriteLine("<treenode text="" & strname & "" NavigateUrl="xxcb_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "" Target="main1"/>") 源代码网推荐 "txtwriter.WriteLine("</treenode>") 源代码网推荐 源代码网推荐 m = Len(strid) / 2 源代码网推荐 源代码网推荐 While m > 1 源代码网推荐 txtwriter.WriteLine("</treenode>") 源代码网推荐 m = m - 1 源代码网推荐 End While 源代码网推荐 Case Is = 0 源代码网推荐 txtwriter.WriteLine("<treenode text="" & strname & "" NavigateUrl="xxcb_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "" Target="main1"/>") 源代码网推荐 "txtwriter.WriteLine("</treenode>") 源代码网推荐 m = Len(strid) / 2 源代码网推荐 源代码网推荐 While m > 1 源代码网推荐 txtwriter.WriteLine("</treenode>") 源代码网推荐 m = m - 1 源代码网推荐 End While 源代码网推荐 Case Is <= 0 源代码网推荐 txtwriter.WriteLine("<treenode text="" & strname & "" NavigateUrl="xxcb_add.aspx?classname=" & strname & "" & strand & "classid=" & strid & "" Target="main1"/>") 源代码网推荐 "txtwriter.WriteLine("</treenode>") 源代码网推荐 源代码网推荐 m = Len(strid) / 2 源代码网推荐 源代码网推荐 While m > 1 源代码网推荐 txtwriter.WriteLine("</treenode>") 源代码网推荐 m = m - 1 源代码网推荐 End While 源代码网推荐 源代码网推荐 End Select 源代码网推荐 txtwriter.WriteLine("</TREENODES>") 源代码网推荐 txtwriter.Close() 源代码网推荐 源代码网推荐 源代码网推荐 这样http://www.zzchn.com/edu/20080727/menuone.txt就按要求生成了菜单源文件。 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
