如何使用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-10-05 00:01:56

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

利用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脚本制作异步装载的树形结构(二)

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

《ASP网页制作教程》笔记

笔记|教程|网页 <ASP网页制作教程>.王国荣 编著,人民邮电出版社. 打开MDB数据库的方法:先定义一个OpenMDB子程序,然后在主程序中调用.<%Option ExplicitSub OpenMDB(dbname,pwd,conn)'dbname-数据库文件的相对路径,pwd-数据库文件的密码,conn-用户定义的Connection对象.'对于没有密码的数据库,pwd值可任意.dim connstrSet conn = Server.CreateObject("ADO

第五课:ASP脚本变量、函数、过程和条件语句

 在上一期中作者向诸位简要介绍了 ASP 脚本语言之一 VBScript 的一些基本常识,本期将继续给大家讲解 VBScript 的脚本编写方法,并通过展示 VBScript 在ASP 程序编写过程中的一系列实例使大家对 VBScript 有更进一层的理解. 大家在学习了脚本语言 VBScript 的变量.常量和过程的基本概念后,本期将继续向各位介绍 VBScript 的函数和语法. 函数和过程一样都是命名了的代码块,但它们却有很大的区别,过程完成程序任务,函数则返回值.我们可以这样理解,过程象

用Agent+ASP技术制作语音聊天室

聊天室 用Agent+ASP技术制作语音聊天室--------------------以下为程序内容,按文章中出现的顺序分块排序 <!--定义"AgentControl"--><OBJECT classid=clsid:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F codeBase=#VERSION=2,0,0,0 id=Agent></OBJECT> <!--定义L&H TruVoice Text-To-S

ASP脚本组件的特点

脚本     我们应该从正反两方面考虑在工作中使用ASP脚本组件的必要性.与编译的组件比较,ASP脚本组件有一个明显的特点:WSC脚本文件可在任何时候进行编辑,在下一次执行时,组件中的变化可自动反映出来.不需要重新编译,不需重新启动服务器释放现有组件的引用,也不需要重新注册.并且,如果组件工作状态良好,可选用合适的语言,用已证明可靠的代码和/或算法创建一个编译版本,这同样适用于任何可转换组件.    ASP脚本组件可适应COM +.事实上,与其他ASP内置对象一样,这种组件可访问ObjectCo

ASP脚本变量、函数、过程和条件语句

变量|过程|函数|脚本|条件|语句 在上一期中作者向诸位简要介绍了 ASP 脚本语言之一 VBScript 的一些基本常识,本期将继续给大家讲解 VBScript 的脚本编写方法,并通过展示 VBScript 在ASP 程序编写过程中的一系列实例使大家对 VBScript 有更进一层的理解. 大家在学习了脚本语言 VBScript 的变量.常量和过程的基本概念后,本期将继续向各位介绍 VBScript 的函数和语法. 函数和过程一样都是命名了的代码块,但它们却有很大的区别,过程完成程序任务,函数

ASP基础入门第五篇(ASP脚本循环语句)_应用技巧

继上一篇我们学习了脚本语言 VBScript 的函数和条件语句后,今天我们继续来看看VBScript 中的循环语句. 循环语句的作用就是重复执行程序代码,循环可分为三类:一类在条件变为"假"之前重复执行语句,一类在条件变为"真"之前重复执行语句,另一类按照指定的次数重复执行语句.在VBScript 中可使用下列循环语句: Do...Loop: 当(或直到)条件为"真"时循环. While...Wend: 当条件为"真"时循环.