您的位置:首页精文荟萃软件资讯 → 利用ASP脚本制作异步装载的树形结构(一)

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

时间:2004/10/7 19:05:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



            树形结构是描述层次数据的常见方法。本文介绍的树形结构生成程序主要由一个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”;第二,返回客户端的节点列表格式为“节点标识|父节点标识|节点文本|……”。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本