欢迎光临
我们一直在努力

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

建站超值云服务器,限时71元/月

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

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 利用ASP脚本制作异步装载的树形结构(一)
分享到: 更多 (0)

相关推荐

  • 暂无文章