利用ASP脚本制作异步装载的树形结构(一)(转)——好东东!!

脚本|异步

    树形结构是描述层次数据的常见方法。本文介绍的树形结构生成程序主要由一个ASP页面、二个JavaScript函数构成。该树形结构是异步的,也就是说,节点数据仅在必要时才读取,而不是一次性全部发送到客户端。

   一、概述

   树形结构中所有的节点都必须包含以下属性:本身的ID,父节点的ID,以及本节点的说明(节点文本)。本文用到了一个Access数据库Tree.mdb来保存这些节点信息。Tree.mdb包含表tblTree,其定义如下:
      字段名称 类型 说明
ElementID 自动编号 节点的唯一标识
ParentElementID 数字 父节点的ID
ElementText 文本 节点文本

   本程序利用Tree.dsn文件定义Tree.mdb数据源。Tree.dsn内容可以用控制面板中的ODBC数据源配置程序得到,内容如下:

 [ODBC]
 DRIVER=Microsoft Access Driver (*.mdb)
 UID=admin
 UserCommitSync=Yes
 Threads=3
 SafeTransactions=0
 PageTimeout=5
 MaxScanRows=8
 MaxBufferSize=512
 ImplicitCommitSync=Yes
 FIL=MS Access
 DriverId=25
 DefaultDir=d:Inetpubwwwroot
 DBQ=d:InetpubwwwrootTree.mdb
   注意运行本文程序时,应当修改Tree.dsn中的DefaultDir和DBQ,使其指向正确的目录和文件。

   客户端功能分两部分实现:其一是一个普通的浏览器窗口,其二为一个IFRAME。IFRAME是不可见的,它的作用是负责浏览器窗口与服务器之间的通信。下面是示例程序的一个运行界面:

  

            【图1】

   树形结构各个节点之间的关系可以用< DIV >标记表示如下:

  

            【图2】

   在这里,文档的< BODY >是第一层节点(divTree0)的容器,第一层总共包含四个节点,这四个节点又分别是其子节点组的容器。例如,上图中divTree0包含了div1、div2、div3和div4(它们分别对应一个节点);而div1又是divTree1的容器,divTree1包含了div5——div8,div5又是divTree5的容器;而divTree5包含了div9……。

   鼠标单击事件由各个节点本身(div1,div2,……)响应,而不是由容器响应。节点响应鼠标单击事件后将禁止事件进一步向上(向父节点)传递。这部分功能在GetTree函数内实现,请参见该函数代码以了解具体实现方法。

   整个树形结构的作用过程可用下图表示:

  

            【图3】

   二、服务器端代码

   客户端脚本向服务器发送的请求包含了一个节点标识,服务器脚本GetTreeData.asp查找数据库获得该节点的所有子字节点,并将这些子节点返回给客户程序。GetTreeData.asp代码如下:

 < % Dim rstTree
    Dim strSQL
    Dim strData
    
    If Request.QueryString("Level") = ""  Then
       Response.End
    End If
 
    strSQL = "SELECT * FROM tblTree WHERE  ParentElementId = "
    strSQL = strSQL & Request.QueryString("Level") & " ORDER BY ElementID "
 
    Set rstTree = Server.CreateObject("ADODB.Recordset")
    rstTree.Open strSQL,"FileDSN=d:inetpubwwwroot    ree.dsn"
 
    strData = ""
    Do While Not rstTree.EOF
       strData = strData & rstTree("ElementId") & "|" & rstTree("ParentElementId") & "|" &      
 rstTree("ElementText") & "|"
       rstTree.MoveNext
    Loop
 rstTree.Close % >
 
 < HTML >
  < BODY OnLoad="parent.PopulateTree('< %=strData% >');" >< /BODY >
 < /HTML >
   注意:在实际使用中应相应地更改DSN文件所在路径。这段代码并不复杂,但请注意以下两点:第一,客户请求的格式应该为“GetTreeData.asp?Level=节点ID”;第二,返回客户端的节点列表格式为“节点标识|父节点标识|节点文本|……”。

时间: 2024-09-19 10:37:40

利用ASP脚本制作异步装载的树形结构(一)(转)——好东东!!的相关文章

利用ASP脚本制作异步装载的树形结构(二)(转)——好东东!!

脚本|异步 三.客户端代码 下面是程序的启动页面Tree.htm: < HTML >   < SCRIPT SRC="Renderer.js" LANGUAGE="JavaScript" >< /SCRIPT >   < HEAD >< /HEAD >   < BODY ID=bodyTree NAME="bodyTree" OnLoad="GetTree();"

如何使用ASP脚本制作异步装载的树形结构(一)

脚本|异步 树形结构是描述层次数据的常见方法.本文介绍的树形结构生成程序主要由一个ASP页面.二个JavaScript函数构成.该树形结构是异步的,也就是说,节点数据仅在必要时才读取,而不是一次性全部发送到客户端. 一.概述 树形结构中所有的节点都必须包含以下属性:本身的ID,父节点的ID,以及本节点的说明(节点文本).本文用到了一个Access数据库Tree.mdb来保存这些节点信息.Tree.mdb包含表tblTree,其定义如下: 字段名称 类型 说明 ElementID 自动编号 节点的

如何使用ASP脚本制作异步装载的树形结构(二)

脚本|异步 三.客户端代码 下面是程序的启动页面Tree.htm: < HTML > < SCRIPT SRC="Renderer.js" LANGUAGE="JavaScript" >< /SCRIPT > < HEAD >< /HEAD > < BODY ID=bodyTree NAME="bodyTree" OnLoad="GetTree();" >

利用Asp.net Ajax异步获取xml文档内容

ajax|asp.net|xml|异步 Ajax原意本是让人利用异步获取XML内容,以实现无刷新的网页效果asp.net ajax已将底层内容封装实现起来远比自写xmlhttp来的方便,至少浏览器兼容方面要强得很多下面以一个www.asp.net的示例说明一下利用microsoft ajax library来简单异步获取xml文档的方法 // 返回XML的Web 请求function OnSucceededXml(executor, eventArgs) ...{    if (executor

运行asp脚本的asp脚本(原作:V37)

脚本|脚本 写这个小东西的出发点,由于经常的需要在线利用asp脚本的ado对数据库执行建表,修改字段每次都要ftp修改升级文件传上去或在线修改好了运行!很是麻烦于是写了这个小东西!很方便~~ 脚本特点:1.可以运行除了 ssi(如#include file) 和 预处理指令(如@ language=javascript)外的任何 asp vbscript 脚本比如数据库连接,记录集的建立,甚至Fso等2.并可运行<%%> <%=%> HTML混编的 ASP脚本 3.有简单的容错处理

利用ASP和XML制作菜单导航系统

xml|菜单|导航 1.1 概述 高效地利用Web页面有限的空间并不容易,特别是要在页面中安排大量的链接时尤为困难.如何才能组织好各种链接以便为其它重要内容留出空间?是一次性地展示所有链接还是分成多个页面把它们深深地隐藏起来?显然,这两种方法都不理想.利用DHTML,我们可以在为用户提供快速方便的访问链接的同时,为其它内容保留足够的页面空间. 本文介绍一个菜单系统的实现.这个菜单与Windows的"开始"菜单非常相似,用户只需点击一次鼠标即可访问所有链接.菜单的内容由XML文档定义,客

利用ASP.NET 2.0的客户端回调功能制作下拉框无限级联动

asp.net|客户端|下拉 记得以前做asp的时候,常会碰到下拉框多级联动,比如说在注册的时候,需要选择省和城市,这就需要二级联动,那个时候一个普遍的做法就是利用javascript脚本来实现,先把数据从数据库中读取出来,放到javascript的数组中,在下拉框的onchange事件触发时,就可以直接从javascript的数组中读取想要的数据.后来在asp.net 1.0中开发时,这种方法也通用,但如果要多级的话,有一个很大的缺点,就是它需要把数据一次性全部读到javascript的数组中

基于ACCESS数据库的纯asp论坛制作心得(树形结构)

access|数据|数据库|心得 感觉做一个论坛不像想象中的那么容易,但也不像想象中的那么复杂:),经过4天的浴血奋战,终于从对论坛制作一无所知到今天的论坛数据结构和组织形势初步确定,中间参考了sunamd,bigeagled,廖家远等的思路,并得到了赖皮王子,hooke,bigeagle大虾的热心帮助,谨以此文一并表示感谢.bigeagle的文章采用了sql数据库的存储过程来实现,但现实中支持asp的免费站点本来就少,支持数据库的免费站点更少,支持sql数据库的免费站点...反正我没见过,哪位

利用ASP制作EXECL报表方法(一)

很多时候我们需要把表格形式的数据转换成EXECL的形式呈现在用户面前,其中有好几个方法可以做到一点,我将介绍一种利用ASP完成的方法,该方法允许服务器动态地创建EXECL报表而且不用占用任何服务器空间.该方法还允许多个用户同时收到该数据.但是该方法至少需要EXECL 97的支持.废话少说,要完成这个工作最重要的是要告诉浏览器HTTP头,就用如下代码: <% Response.ContentType = "application/vnd.ms-excel"%> 下面来看一个例