请按ctrl+D把本页加入收藏夹
文章内容
07-04-06 00:54:13

在Web界面下数形目录显示程序(版本1.0)-建站心得-

       
 


>>在Web界面下数形目录显示程序(版本1.0)<< 目前该程序已在软件中使用,效果很好!在这里公布了两个适用不同情况的两个版本版权申明:如果您要把它用于个人的学习与研究,本人欢迎!但如果用于商业用途,请与本人联系taojianbo@263.net------------------------------<%@ Language=VBScript %><HTML><HEAD><META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"><SCRIPT LANGUAGE=javascript><!--// --------------------------Client Code Start-------------------------------/*''''''''''''''''''''''''''''''''''''''''''''''''功能:树形结构的显示(树形菜单)''说明:该程序容易理解,算法清晰,您只需使用,无需做什么修改就可以适用于各种环境''使用中如遇问题,请与我联系''Version 1.0''作者:陶建波 taojianbo@263.net''2001.9.15''**NEW**2001.10.10陶建波''性能评测:''  以本程序所提供的算法,对处理少量的数据来说,是一种简单快捷的方法,但是如果是大量的数据呢''比如:菘獾募锹即锏?k(千),1m(百万)会如何呢?如果是用来人口统计呢?''假设树的平均层次为layer,记录数为n,则计算:''文件大小:length=2000(附加的固定大小部分)+(layer*130+280+$)*n'' $的大小有layer,n与实际情况决定,但一般大于100''最后计算length,文件的大小可能是nk''由此看来,该算法不适用与大的数据量的情况,请用户考虑好''为了改变这种不利情况,最新的算法版本请见powertree.asp,该程序将在目前功能的基础上着重考虑性能问题'''''''''''''''''''''''''''''''''''''''''''''''*/function showhide(objspan){//显示,隐藏区域,达到菜单显示的目的var temp; eval("temp=oSpan"+objspan+".style.display");if(temp=="none") { eval("oSpan"+objspan+".style.display='block'"); eval("oImg"+objspan+".src="http://127.0.0.1/f/Files/jpg/2007-4/6/KJH15H2GI4946H0G0G.bmp"");}}//end function//-----------------------------Client Code End--------------------------//--></SCRIPT><style type="text/css"><!--a:link {  font-size: 14px; text-decoration: none; color: #0000FF}a:visited {  font-size: 14px; color: #0000FF; text-decoration: none}a:hover {  font-size: 14px; color: #FF0000; background-color: #CCCC99; text-decoration: none}a:active {  font-size: 14px; color: #FFFFFF; background-color: #191970; text-decoration: none}.item{ font-size:14px}--></style></HEAD><BODY leftmargin=0 rightmargin=0><table><tr><td valign=top><%'''''''''''''''''''''''''''''''Server code start'''''''''''''''''''''''''''''''dim layer,seqer,rowcount,colcount ''全局变量定义 layer=0  '''树的层次计数器,初始化为0 seqer=0  '''顺序号计数器,初始化为0 rowcount=0 '''树组的第一维数 colcount=0 '''树组的第二维数function listchild(id)''参数:树的根结点ID''可变部分:''erect.bmp,blank.bmp,link.bmp,line.bmp,open.bmp,close.bmp 各图片的''说明:在本程序中作了这样的假设,你的树在数据库存储的方法为 tree{row_id,nodename,par_id,...}''不要在未看清楚之前修改任何一条语句''在代码中,在editable start 与editable end 之间的未可修改内容'''' dim parid,i,blnchild,lastobji dim lastseqer lastobji=""  '本级的最后一个对象i值,初始化为空 parid=id  ' i=0    '基数0 blnchild=false '该节点是否有子节点,初始化为false lastseqer=0  '上一个节点的顺序号,初始化为0,及  while(i<rowcount)    if(treedata(i,2)=parid) then   lastobji=i   '   if(seqer-lastseqer>1 and lastseqer<>0) then    k=lastseqer+1    Response.write("<script language=javascript>")    while(k<seqer )     Response.write("oerectImg"&layer&k&".src="http://127.0.0.1/f/Files/jpg/2007-4/6/KA91I3IKK627EEB99H.bmp";")     k=k+1    wend    Response.Write("</script>")       end if   j=0   while(j<layer)    Response.Write("<img id='oerectImg"&j&seqer&"' src="http://127.0.0.1/f/Files/jpg/2007-4/6/1F4CIHE44AEADBHBA3.bmp" border=0 align='absmiddle'>")    '#b01# Response.Write("<img src="http://127.0.0.1/f/Files/jpg/2007-4/6/1F4CIHE44AEADBHBA3.bmp" border=0 align='absmiddle'>")      ''如果觉得垂直线之间的宽度小了,可以去掉#b01# ,#b02#两条语句的注释,同时也可以通过更改图片的大小以达目的        j=j+1   wend      Response.Write("<img id='olinkImg"&parid&i&"' src="http://127.0.0.1/f/Files/jpg/2007-4/6/C9F939E61B08AAGFI6.bmp" border=0 align='absmiddle'>")   '#b02# Response.Write("<img src="http://127.0.0.1/f/Files/jpg/2007-4/6/2HA5K253EFB2ADKF9F.bmp" border=0 align='absmiddle'>")   Response.Write("<img id='oImg"&parid&i&"' style='cursor:hand' src="http://127.0.0.1/f/Files/jpg/2007-4/6/7E8FGBDFHAKAK57EC1.bmp" border=0 align='absmiddle' onclick=showhide('"&parid&i&"')>")   ''''''''''''''''''''''editable start'''''''''''''''''''''''''''''''''''''''   Response.write("<span class=item>&nbsp;</span><a href='view.asp?id="&treedata(i,0)&"' target='mainFrame' style=''>"&treedata(i,1)&"</a>")      ''上面一行用户可以自行添加修改一满足实际情况。   ''''''''''''''''''''''editable   end'''''''''''''''''''''''''''''''''''''''   Response.Write("<br>")      lastseqer=seqer  '取值在先,递加在后,其中lastseqer是局部变量,其值不会与seqer同步   seqer=seqer+1  '顺序号加一   layer=layer+1  '进入递归,层次layer加一   Response.write("<span id='oSpan"&parid&i&"' style='display:none ' >")   if(listchild(treedata(i,0))=false) then    Response.write("<script language=javascript>oImg"&parid&i&".src="http://127.0.0.1/f/Files/jpg/2007-4/6/8697JF8I8A0H44G4DH.bmp";")    Response.write("oImg"&parid&i&".onclick='';")    'Response.write("oImg"&parid&i&".style='cursor:nw-resize';")''改变光标类型    Response.write("</script>")   end if   ''''如果没有下一级,则修改前面的图标为close.bmp   Response.write("</span>")   blnchild=true  end if  i=i+1   wend if(lastobji<>"") then  Response.write("<script language=javascript>olinkImg"&parid&lastobji&".src="http://127.0.0.1/f/Files/jpg/2007-4/6/0JD8I6BE96DAJEB009.bmp";</script>")   end if layer=layer-1 '退出递归,层次减一 listchild=blnchild '返回是否有子节点end function%> <% strconn="at" strsql="select * from tree" ''SQL 语句书写要求:在记录集的前嫒鲎侄伪匦胍来挝簉ow_id(惟一的主键)、name(菜单条显示的内容)、par_id(父节点row_id),其它根据需要输出与显示set conn=server.createobject("ADODB.connection") conn.open strconnset rs=server.createobject("ADODB.Recordset") rs.open strsql,conn,3,3 rs.MoveFirst%> <% rowcount=rs.RecordCount  colcount=3 '这个值根据实际情况设定dim treedata,i,jredim treedata(rowcount,colcount) rs.MoveFirst i=0while(not rs.EOF)  j=0 while(j<colcount)   treedata(i,j)=rs.Fields(j).Value  j=j+1 wend rs.MoveNext i=i+1wend rs.Closeset rs=nothing'''''''初始化完毕数组 Response.write("<span id='treeroot' style='display:block' border=0>") Response.Write("<bold>树形菜单演示程序</bold><br>") listchild("root") Response.write("</span>") '''''''''''''''''''''''''''''''''''''''''Server Code END ''''''''''''''''''''''''''''''''''%></td></tr></table></BODY></HTML>

 
 
   
 

 
 
便民工具箱
 
最新文章