◆前日,根据客户需要,要根据如下的表动态生...... 前日,根据客户需要,要根据如下的表动态生成如下的菜单:表中的数据是动态更新的。 我们平时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〉 现在的问题变成了如何将数据表根据“类别号”修改menuone.txt文件。将该过程放在对数据表修改后进行。下面是根据表的内容生成menuone.txt的源代码: Imports System.IO Dim txtwriter As StreamWriter txtwriter = File.CreateText(Server.MapPathstrpath ("\menuone.txt")) txtwriter.WriteLine(" 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(" Case Is = 0 txtwriter.WriteLine(" Case Is < 0 txtwriter.WriteLine(" 'txtwriter.WriteLine(" m = k While m < 0 txtwriter.WriteLine("") 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(" 'txtwriter.WriteLine("") m = Len(strid) / 2 While m > 1 txtwriter.WriteLine("") m = m - 1 End While Case Is = 0 txtwriter.WriteLine(" 'txtwriter.WriteLine("") m = Len(strid) / 2 While m > 1 txtwriter.WriteLine("") m = m - 1 End While Case Is <= 0 txtwriter.WriteLine(" 'txtwriter.WriteLine("") m = Len(strid) / 2 While m > 1 txtwriter.WriteLine("") m = m - 1 End While End Select txtwriter.WriteLine(" txtwriter.Close() 这样menuone.txt就按要求生成了菜单源文件。 如有更好的办法,请与我联系谢谢。QQ:149592886 |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-30 09:37 , Processed in 0.127879 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.