帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP编程
ASP.NET中不定级动态菜单的实现
作者:佚名 发布时间:2005-04-02 来源:不详
   我们平时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("<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()  

  这样menuone.txt就按要求生成了菜单源文件。  

  
  
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·教你使用 ASP.NET 加密口令  (2005-04-02)
 ·用ASP.NET实现在线用户统计  (2005-04-02)
 ·ASP.NET应用程序设计的10大技巧  (2005-04-02)
 ·在ASP.NET中创建安全的web站点  (2005-04-02)
 ·ASP.NET缓存:方法和最佳实践  (2005-04-02)
 ·十天学会ASP.net之第三天  (2005-04-02)
 ·十天学会ASP.net之第四天  (2005-04-02)
 ·十天学会ASP.net之第五天  (2005-04-02)
 ·十天学会ASP.net之第六天  (2005-04-02)
 ·十天学会ASP.net之第七天  (2005-04-02)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·在ASP中使用数据库
·使用ASP脚本技术
·通过启动脚本来感受ASP的力量
·学习使用ASP对象和组件
·解析asp的脚本语言
·初看ASP-针对初学者
·ASP开发10条经验总结
·ASP之对象总结
·ASP与数据库应用(给初学者)
·关于学习ASP和编程的28个观点
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统