如何生成像资源管理器一样的树形目录

殇疯残

殇疯残

2016-02-19 17:49

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐如何生成像资源管理器一样的树形目录,赶紧看过来吧!

  问题描述:

  在我们项目中常常会出现自关联的数据表,如果我们从整体看去,整个表就呈现为一个树形数据结构(对于复杂的情况,它可能变成一个图)。当我们对这个表进行显示,编辑时,如果不采用好的表现形式,会显得很笨拙,为此,我们开发这样的树形结构的程序。在上一版本中,我们使用的是递归算法来实现,在我们对这个算法评测时发现,对于拥有成千上万条记录的数据库就不再能胜任了,所以在新的算法版本中,我们使用了XML技术,动态的发现数据,以解决一次从服务器下在大量数据的尴尬,同时也遍免了如果表数据结构呈现为图时就会进入死循环的错误。

  实际思路:

  1、 初始显示时只显示根与二级节点,根与二级节点同在一层次

  2、 点击一节点,如果它的子节点区域对象不存在,则建立对象,同时下载数据更新数据,显示所有子节点。

  3、 每个节点在建立后都就有相同的功能,如检查子节点是否存在,显示隐藏子节点等等

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

  4、 DHTML+XML+ASP+CSS同时使用

  技术难点:

  1、 使用xmlhttp接口时乱码问题:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

  因为在asp输出页面中,缺省的编码方案并不是中文的,那么在客户端页面的xmlhttp中解释时,就会以缺省的方案解析,所以就会出现乱码。为此,我们在Server端的asp页面中,加入如下代码定义编码方案:

Response.CharSet="GB2312"Response.ContentType="text/html"

  2、 如何在界面上保持上一版本的风格(类资源管理器形式):

  在上一版本中,所有的页面内容都是一气呵成的,在控制上采用递归等思想,所有时的界面相对友好,当时本版中的机制发生了变化,内容是有多次合成的关键问题,img ,span 对象的id 如何确定

  经过求证,在界面上,本版本的界面难以与第一界面相同,所以只能保留一部分,但是总体来说,新界面同样也能满足需要

  ---xtree.html-------------------------------------------------------------------

  

HTMLHEADMETA NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"SCRIPT LANGUAGE=javascript src="xtree.js"/SCRIPTstyle 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/HEADBODY leftMargin=0 rightMargin=0 topMargin=0 border=0bold树形菜单演示程序/boldbrtable border=0trtd nowrapspan id='oSpanroot' border=0/spanSCRIPT LANGUAGE=javascriptcreateChildNode("root",0);/SCRIPT/td/tr/table/BODY/HTML

  -------xtree.asp---------------------------------------------------------------

  

%@ Language=VBScript %%Response.CharSet="GB2312"Response.ContentType="text/html"'''''''''''''''''''''''''''''''Server code start'''''''''''''''''''''''''''''''dim parId,nodeLayerparid=Request.QueryString("parId")nodeLayer=cint(Request.QueryString("nodeLayer"))if(parid="") thenResponse.Write("root id can't is null")Response.End()end ifif(nodeLayer0) thennodeLayer=0end if%%strconn="at"strsql="select * from tree where par='"&parid&"'"''SQL 语句书写要求:在记录集的前面三个字段必须依次为:row_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,3i=0dim row_idrow_id=""while not rs.EOFrow_id=rs.Fields("row_id").Valuename=rs.Fields("name").Valuej=0while jnodeLayerResponse.Write("img src="http:///edu/Files/newspic/3/059205553411856.bmp"")j=j+1wendResponse.Write("img id='objNode"&row_id&"' style='cursor:hand' src="http:///edu/Files/newspic/3/059205553428204.bmp" onclick=javascript:createChildNode('"&row_id&"',"&nodeLayer+1&") border=0 align='absmiddle'")Response.Write("img src="http:///edu/Files/newspic/3/059205553411856.bmp" border=0 align='absmiddle'")Response.Write("a href='view.asp?id="&row_id&"' target='mainFrame'"&Trim(name)&"/a/br") '项目内容Response.Write("span id='oSpan"&row_id&"' /span") '子节点内容区域i=i+1rs.MoveNextwend'''''''''''''''''''''''''''''''''''''''''Server Code END ''''''''''''''''''''''''''''''''''%

  ---------xtree.js-----------------------------------------------------------------------------

  

function getChildTree(parId,nodeLayer)//parId:=夫节点id,nodeLayer:=子节点所属层次{var xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");xmlhttp.Open("get", "xtree.asp?parId="+parId+"&nodeLayer="+nodeLayer, false);xmlhttp.Send("Author:taojianbo;Version:2.0");return xmlhttp.responseText;}function showHide(objid)//显示,隐藏区域,达到菜单显示的目的//objid:=区域对象ID的parid部分{var temp;eval("temp=oSpan"+objid+".style.display");if(temp=="block"){eval("oSpan"+objid+".style.display='none'");eval("objNode"+objid+".src="http:///edu/Files/newspic/3/059205553428204.bmp"");}else{eval("oSpan"+objid+".style.display='block'");eval("objNode"+objid+".src='close.bmp'");}}//end functionfunction createChildNode(childNodeId,nodeLayer)//如果子节点内容为空,则初始化,并更新数据//childNodeId:=子节点对象Id的parid部分{var temp;eval("temp=oSpan"+childNodeId+".innerHTML");if(temp==""){eval("oSpan"+childNodeId+".innerHTML='div align=rightLOADING.../divbr'");temp=new String(getChildTree(childNodeId,nodeLayer));if(temp.length!=0){eval("oSpan"+childNodeId+".innerHTML=temp");eval("objNode"+childNodeId+".src="http:///edu/Files/newspic/3/059205553555285.bmp"");//更改图标eval("objNode"+childNodeId+".onclick=''"); //取消click事件eval("oSpan"+childNodeId+".innerHTML=temp");//内容为空}}else{ showHide(childNodeId);}}

展开更多 50%)
分享

猜你喜欢

生成像资源管理器一样的树形目录

ASP
生成像资源管理器一样的树形目录

如何生成像资源管理器一样的树形目录

Web开发
如何生成像资源管理器一样的树形目录

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在Web界面下如何生成像资源管理器一样的树形目录(版本2.0)

ASP
在Web界面下如何生成像资源管理器一样的树形目录(版本2.0)

ASP做象资源管理器的树形目录

ASP
ASP做象资源管理器的树形目录

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

生成类似Windows资源管理器

ASP
生成类似Windows资源管理器

怎么重启资源管理器

电脑入门
怎么重启资源管理器

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Win7系统下网络优先级如何进行设置

Win7系统下网络优先级如何进行设置

Delphi 异常处理与程序调试

Delphi 异常处理与程序调试
下拉加载更多内容 ↓