当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET中不定级动态菜单的实现

ASP.NET
.net开发实例:绑定到ADO.NET数据源
vb.net中应用 ArrayList 实例
用.net 处理xmlHttp发送异步请求
编写ASP.NET应用程序的十大技巧
完全不使用配置文件构建和使用WCF服务
VB.net2008精彩实例,窗体应用技巧
VB.Net实现Web Service的基础
实用技巧:.Net框架类库中定时器类的使用
ASP.NET MVC:实现我们自己的视图引擎
基于ASP.NET MVC框架开发Web论坛应用程序
用VB.net2008打造你的影音播放器
如何使用.NET实现断点续传功能
如何用.NET技术在线生成网站LOGO
挖掘ADO.NET Entity框架的性能
编写ASP.NET应用程序的十大技巧 (1)
Asp.NET大文件上传开发总结集合
.net开发:如何为程式码加上行号
ASP.NET 中整合JavaScript技巧
浅谈.NET中加密和解密的实现方法
浅析ASP.NET 2.0 Client Callback

ASP.NET中不定级动态菜单的实现


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 225 ::
收藏到网摘: n/a

作者:xiangwa出处:CSDN

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

我们平时IEWebContr来做菜单时都是在html中直接输入,也就是说是静态的,现在要做成动态的,而且菜单级数不定,怎么来实现呢?笔者通过研究发现,用IEWebContr来做菜单时,菜单项可以直接输入,也可以用如下的方法指定从某一个文件中读取菜单项:

 <iewc:TreeViewrunat="server"ID="Treeview1"NAME="Treeview1">
<iewc:TreeNodeid="Treenode1"runat="server"TreeNodeSrc="menuone.txt"Expanded="True"Text="信息类别列表"></iewc:TreeNode>
</iewc:TreeView>

其中menuone.txt的内容如下:

<TREENODES>
<treenodetext='蔬菜'NavigateUrl='xxcb_add.aspx?classname=蔬菜&classid=01'?Target='main1'>
<treenodetext='白菜'NavigateUrl='xxcb_add.aspx?classname=白菜&classid=0101'??Target='main1'/>
<treenodetext='萝卜'NavigateUrl='xxcb_add.aspx?classname=萝卜&classid=0102'??Target='main1'/>
<treenodetext='黄花菜'NavigateUrl='xxcb_add.aspx?classname=黄花菜&classid=0103'??Target='main1'/>
</treenode>
<treenodetext='水果'NavigateUrl='xxcb_add.aspx?classname=水果&classid=02'?Target='main1'>
<treenodetext='苹果'NavigateUrl='xxcb_add.aspx?classname=苹果&classid=0201'?Target='main1'>
<treenodetext='红富士'NavigateUrl='xxcb_add.aspx?classname=红富士&classid=020101'??Target='main1'/>
<treenodetext='其它苹果'NavigateUrl='xxcb_add.aspx?classname=其它苹果&classid=020102'??Target='main1'/>

 </treenode>
<treenodetext='桃子'NavigateUrl='xxcb_add.aspx?classname=桃子&classid=0202'??Target='main1'/>
<treenodetext='荔枝'NavigateUrl='xxcb_add.aspx?classname=荔枝&classid=0203'??Target='main1'/>
</treenode>
<treenodetext='粮食'NavigateUrl='xxcb_add.aspx?classname=粮食&classid=03'?Target='main1'>
<treenodetext='大米'NavigateUrl='xxcb_add.aspx?classname=大米&classid=0301'??Target='main1'/>
<treenodetext='玉米'NavigateUrl='xxcb_add.aspx?classname=玉米&classid=0302'??Target='main1'/>
</treenode>
</TREENODES>

现在的问题变成了如何将数据表根据“类别号”修改menuone.txt文件。将该过程放在对数据表修改后进行。下面是根据表的内容生成menuone.txt的源代码:


 ImportsSystem.IO
DimtxtwriterAsStreamWriter
txtwriter=File.CreateText(Server.MapPathstrpath("\menuone.txt"))
txtwriter.WriteLine("<TREENODES>")

DimobjConnAsOleDbConnection
DimobjCmdAsOleDbCommand
DimobjReadAsOleDbDataReader
DimstrSQL,strDSNAsString
Dimstrid,strname,strid1,strname1AsString
DimstrandAsString
strand="&amp;"


Dimi,j,k,mAsInteger
i=0
j=0
k=0
m=0

strSQL="select*fromclassorderbyclassid"

objConn=NewOleDbConnection(ConfigurationSettings.AppSettings("connString"))
objCmd=NewOleDbCommand(strSQL,objConn)
objCmd.Connection.Open()
objRead=objCmd.ExecuteReader()

WhileobjRead.Read()

Ifj=0Then
j=Len(Trim(objRead.Item("classid")))
Else
strid=strid1
strname=strname1
i=Len(Trim(objRead.Item("classid")))

k=i-j

SelectCasek
CaseIs>0
txtwriter.WriteLine("<treenodetext='"&strname&"'NavigateUrl='xxcb_add.aspx?classname="&strname&""&strand&"classid="&strid&"'Target='main1'>")
CaseIs=0
txtwriter.WriteLine("<treenodetext='"&strname&"'NavigateUrl='xxcb_add.aspx?classname="&strname&""&strand&"classid="&strid&"'Target='main1'/>")
CaseIs<0
txtwriter.WriteLine("<treenodetext='"&strname&"'NavigateUrl='xxcb_add.aspx?classname="&strname&""&strand&"classid="&strid&"'Target='main1'/>")
'txtwriter.WriteLine("</treenode>")

m=k
Whilem<0
txtwriter.WriteLine("</treenode>")
m=m+2
EndWhile

EndSelect

j=Len(Trim(objRead.Item("classid")))

EndIf

strid1=Trim(objRead.Item("classid"))
strname1=Trim(objRead.Item("classname"))

EndWhile

'strid=strid1
'strname=strname1
i=Len(strid)
k=j-i
strid=strid1
strname=strname1
SelectCasek
CaseIs>0
txtwriter.WriteLine("<treenodetext='"&strname&"'NavigateUrl='xxcb_add.aspx?classname="&strname&""&strand&"classid="&strid&"'Target='main1'/>")
'txtwriter.WriteLine("</treenode>")

m=Len(strid)/2

Whilem>1
txtwriter.WriteLine("</treenode>")
m=m-1
EndWhile
CaseIs=0
txtwriter.WriteLine("<treenodetext='"&strname&"'NavigateUrl='xxcb_add.aspx?classname="&strname&""&strand&"classid="&strid&"'Target='main1'/>")
'txtwriter.WriteLine("</treenode>")
m=Len(strid)/2

Whilem>1
txtwriter.WriteLine("</treenode>")
m=m-1
EndWhile
CaseIs<=0
txtwriter.WriteLine("<treenodetext='"&strname&"'NavigateUrl='xxcb_add.aspx?classname="&strname&""&strand&"classid="&strid&"'Target='main1'/>")
'txtwriter.WriteLine("</treenode>")

m=Len(strid)/2

Whilem>1
txtwriter.WriteLine("</treenode>")
m=m-1
EndWhile

EndSelect
txtwriter.WriteLine("</TREENODES>")
txtwriter.Close()

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