用ASP和&#106avascript实现网页上的动态分级目录

动态|网页

一、动态分级目录及其特点
所谓分级目录,其实大家并不陌生,熟悉Windows操作系统的人,一定对Windows下文件系统的资源管理器有印象,分级目录的显示(如下图所示)就象资源管理器一样是一个树形结构。  

通过点击“文件夹”图标,你就可以看到这个类别下的子类别,如此递归直到最末梢的结点。
这种分级目录在许多网络应用中都很重要,它主要有以下优点:
1.直观性强:即使一个不了解计算机,不经常上网的人通过这种分级目录显示也不会在超文本的海洋中迷失方向,而能够方便地找到自己要去的地方。
2.便于管理:对于系统的编写和维护人员而言,这种结构也更有利于程序模块化的实现。
总之,一个界面友好的网页或应用程序是离不开分级目录的,目前许多网站也在自己的页面上采用了这种形式,但是大多数的分级目录都是静态的,即它们都是用单纯的javascript或html写成的,因此当网页的内容有所变化时,必须修改网页的源程序代码,这样做的弊端是显而易见的,但最主要的缺点是给页面的维护人员增加了许多不必要的工作量,降低了工作的效率,因此在这里主要介绍一种用ASP技术和javascript来实现动态分级目录的方法。动态分级目录,即网页上所显示分级目录的各个结点是以一定的数据结构存储在数据库中的,因此就可以通过对数据库进行相应的增、删、改操作来控制网页上的显示内容,达到方便、直观、快捷的目的。
用一句话来概括动态分级目录的特点,那就是在充分发扬原有静态分级目录优点的基础上弥补了它在灵活性和管理维护性上的不足。
二、系统总体介绍
1.系统环境
服务器:WindowsNT,安装有IIS5.0或IIS6.0,Oracle8数据库,ODBC
用户端:任何操作系统,装有TCP/IP协议,有Internet浏览器(如IE、NC)
2.相关技术:ASP(Active Server Pages),Oracle数据库,SQL语言,JavaScript,HTML,CSS等。
3.相关开发工具:DreamWeaver,PhotoShop等。
4.相关的数据结构
文件类别名称数据库:law_type_name
字段名称 字段含义
Typekey 类别关键字(主键)
Typename 类别名称
F_point 前向指针,指示该类别上一级类别的关键字
B_point 后向指针,指示该类别的下属是类别还是具体文件
0:说明其下属也是类别,在本库中寻找
1:说明其下属为具体文件,应在法律法规数据库
(law_rule)中寻找

法律法规数据库:law_rule
字段名称 字段含义
id 文件序号(主键)
Title 文件标题
Content 文件内容
Pubdate 发布日期
Puborg 发布单位
Regdate 登记日期
Update_date 最后修改时间
Typekey 文件所属类别

动态分级目录的数据结构决定了它主要由两种不同的节点构成,一种是具体的文档节点,一种是复合型的文件夹节点。文档节点是动态分级目录的神经末梢,当浏览者单击这样的节点时,相当于单击一个超级链接,浏览器会在右边的帧中自动装入相应类别的法律法规文件供用户查询。文件夹节点下可以有若干个子节点,这些子节点可以是文档节点,也可以是文件夹节点,这样就可以形成一个完整的分级目录了。
动态分级目录中的每一个节点都是一个拥有4+n个元素的数组,其中记录了节点的类型、名称、当前状态以及从属关系等信息,其中各个元素的含义如下所示:
node[0]=0/1 代表这个节点是关闭还是打开的,0代表关闭,1代表打开;
node[1]=0/1 代表这个文件夹是关闭还是打开的,0代表关闭,1代表打开;
node[2] 暂时没有意义;
node[3] 代表该节点的名称;
node[4]......node[n] 代表了该节点的n个子节点。
总之,一个动态分级目录的数据结构可用以下的树形结构来表示:

三、相关算法和函数说明
当将default.asp这个页面载入浏览器时,首先调用initializetree()函数来完成动态分级目录的创建和显示。这个函数进一步调用由ASP生成的generatetree()函数,该函数通过ADO从头到尾扫描law_type_name中的数据,并由此生成包含所有节点的数组,在数组已经存在的基础上调用Redrawtree()等函数就可以递归地在页面上显示分级目录了。
下面是对主要用到的一些函数的详细介绍:
generatetree()函数,利用ASP创建每个节点的数组,并建立起各节点之间的联系,程序代码如下:
<%
set myconn=server.createobject("adodb.connection")
//创建ADO的connection对象的实例myconn
set rs=server.createobject("adodb.recordset")
//创建ADO的recordset对象的实例rs
rs.open "select * from law_type_name order by  
typekey",myconn,adopenstatic //将law_type_name中的数据赋给rs
cr=chr(13)&chr(10)//回车换行符
response.write("<script languang=Javascript>"&cr)
response.write("function generatetree(){"&cr)
response.write("var aux;"&cr)
response.write("aux=new Array();"&cr)
i=1
while not rs.eof //开始逐个扫描law_type_name中的数据
if rs("f_point")=0 then //生成最根本的节点,其他节点都是它的子孙
response.write("folderstree=foldernode('"
&trim(rs("typename"))&"');"&cr)
else
if rs("b_point")=0 then //若该节点为文件夹节点
if rs("f_point")=1 then //若该节点是根的直接子节点

response.write("aux["&rs("typekey")&"]=appendchild
(folderstree,foldernode('"&trim(rs("typename"))&"'));"&cr  
//加入文件夹节点
else
response.write("aux["&rs("typekey")&"]=
appendchild(aux["&rs("f_point")&"],
foldernode('"&trim(rs("typename"))&"'));"&cr  
//加入文件夹节点
end if
else
if rs("f_point")=1 then
response.write("appendchild(folderstree,generatedocentry(0,'"&
trim(rs("typename"))&"','',"&trim(rs("typekey"))&"));"&cr)  
//加入文档节点
else
response.write("appendchild(aux["&rs("f_point")&"],
generatedocentry(0,'"&trim(rs("typename"))&"','',"
&trim(rs("typekey"))&"));"&cr) //加入文档节点
end if
end if
end if
rs.movenext
wend
response.write("}")
response.write("</script>")
rs.close //释放对象资源
myconn.close
%>
//******************************
//下面是构造节点的辅助函数
function foldernode(name) //用来生成文件夹节点
{
var arrayaux;
arrayaux=new Array();
arrayaux[0]=0;
arrayaux[1]=0;
arrayaux[2]=0;
arrayaux[3]=name;
return arrayaux;
}
function generatedocentry(icon,docdescription,link,num)  
//用来生成文档节点
{
var retstring="";
retstring="<img src='http://www.163design.net/a/law_rule/pic/doc.gif'";  
//用来显示文档节点前的小图标
retstring=retstring+"border=0>"+" "+"<td nowrap>"+
"<a href=typeinquest.asp?typekey="+num+
"target='folderframe'>"+docdescription+"</a>"+" ";
//显示带超链接的文档节点
return retstring;
}
function appendchild(parent,child)  
//建立文件夹节点与文档节点之间的关系
{
parent[parent.length]=child;
return child;
}
//*************************************
//当网页载入浏览器时调用这个函数
function initializetree() //页面的初始化
{
generatetree();
top.openbranch("法律法规"); //显示根节点
redrawtree(); //显示整个动态分级目录
}
//**************************************
//显示动态分级目录
function redrawtree()
{
var do

时间: 2024-11-26 20:41:29

用ASP和&#106avascript实现网页上的动态分级目录的相关文章

用ASP和JavaScript实现网页上的动态分级目录

一.动态分级目录及其特点 所谓分级目录,其实大家并不陌生,熟悉Windows操作系统的人,一定对Windows下文件系统的资源管理器有印象,分级目录的显示(如下图所示)就象资源管理器一样是一个树形结构.  通过点击"文件夹"图标,你就可以看到这个类别下的子类别,如此递归直到最末梢的结点.这种分级目录在许多网络应用中都很重要,它主要有以下优点: 1.直观性强:即使一个不了解计算机,不经常上网的人通过这种分级目录显示也不会在超文本的海洋中迷失方向,而能够方便地找到自己要去的地方.2.便于管

ASP中如何在网页上输入中文日期

ASP中如何在网页上输入中文日期 我们通常需要在WEB页面上写上当前的日期,可能使用客户端script,或者使用ASP.使用ASP的一个特点是,它产生的效果看起来是静态的页面,但实际上它是动态生成的.如果你希望用ASP显示一个中文的日期,则需要转化一下.下面是用来转化的函数及其调用实例. < % '====================================================== ' 函数 Date2Chinese ' 功能:获得中文日期的字符串(如一九九八年五月十二日

网页采集-求c#用webbrowser采集网页上的动态内容

问题描述 求c#用webbrowser采集网页上的动态内容 求c#用webbrowser采集网页上的动态内容采集到EXCEL上,小弟新手,麻烦大大可以给点思路,或者代码哈,不胜感激 解决方案 http://blog.csdn.net/jintougao/article/details/12948633http://blog.163.com/wei_jia192@126/blog/static/9837925020103161001450/

如何抓取工行网页上的动态报价数据?

问题描述 就是这个网页http://www.icbc.com.cn/gold/price_gold.jsp用如下方法抓取得到的内容不含有"相关市场报价",为什么?...HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(Url);HttpWebResponseresponse=(HttpWebResponse)request.GetResponse();StreamstreamReceive=response.GetRespo

怎么实现在网页上可动态调节宽度的面板?

问题描述 如题,在网上看到一个网页http://115.28.135.49:8099/,页面有左中右三块面板,都可以通过用鼠标来动态调节宽度,想知道这个是怎么实现的,请高手指点,万分感谢! 解决方案 解决方案二:使用JQuery,监听拖动事件,然后改变列的width.参考http://www.cnblogs.com/xxfss2/archive/2011/01/21/1941567.htmlhttp://blog.csdn.net/andensy/article/details/5528944解

用ASP技术实现在WEB网页上浏览目录及文件

web|网页 用ASP技术实现在WEB网页上浏览目录及文件 周仰平 摘要  目前在许多单位里,象WORD.EXCEL或WPS该类文档文件已成为重要的数据信息资源,在INTRANET WEB平台上如何高效率地管理这些信息资源是一个需要解决的问题.本文是利用ASP技术开发一个基于WEB的应用程序,实现在WEB页面上浏览目录文件,很轻易地做到诸如WORD.EXCEL和WPS等文档文件的查阅和下载,大大地减少信息维护的工作量. 关键词  ASP  WEB  文档文件   前言:在INTRANET平台上,

用ASP.NET在网页上显示缩略图

asp.net|缩略图|网页|显示 网站上可能会有很多图片,比如产品图片等,而且他们可能大小不一,宽度和高度也不一定一样,有的很大有的很小.如果放在一张网页上,可能会破坏版面,但是如果强制让他们按照指定的宽度和高度显示,因为比例不同还会出现变形,显示效果很糟糕,还有最大的缺点是,文件尺寸丝毫没有变化,当图片很大的时候,用户想要看到图片,必须经过漫长等待下载图片,怎么办呢? 好,这里设计到了缩略图,就像Windows中的缩略图查看一样,你所看到的是从原图按照1:1比例缩小的图片,而且满足规定在指定

在asp.net网页上如何显示搜索关键字,如何得知用户通过什么百度关键字进来的?代码怎么写?

问题描述 在asp.net网页上如何显示搜索关键字,如何得知用户通过什么百度关键字进来的?代码怎么写? 在asp.net网页上如何显示搜索关键字,如何得知用户通过什么百度关键字进来的?代码怎么写? 解决方案 通过来路信息(referer)可以获取百度的url 其中可以解析出关键字 然后再在你的网页上高亮标记出来就可以了.

c#-asp的web form中,在后台生成了表,怎样让表在网页上显示

问题描述 asp的web form中,在后台生成了表,怎样让表在网页上显示 自己在后台动态生成了一个表,但是在网页上面显示不出来,不知道为什么,表的动态生成写在Page__load()函数中,页面设计如下: <%@Page Language="C#" AutoEventWireup="true" CodeBehind="Reservationa.aspx.cs" Inherits="HT.Reservationa" Ma