帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP编程
利用ASP脚本制作异步装载的树形结构(一)
作者: 发布时间:2005-03-12 来源:
    树形结构是描述层次数据的常见方法。本文介绍的树形结构生成程序主要由一个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”;第二,返回客户端的节点列表格式为“节点标识|父节点标识|节点文本|……”。 
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·利用ASP实现三个强大功能(一)   (2005-03-12)
 ·利用ASP实现三个强大功能(二)   (2005-03-12)
 ·利用ASP实现三个强大功能(三)   (2005-03-12)
 ·利用自己开发的vc组件结合asp实现  (2005-03-12)
 ·利用WSH作定時工作排程(转自:L  (2005-03-12)
 ·利用随机函数获取某一范围的整数  (2005-03-12)
 ·<展现C#> 第六章 控制语句(rain  (2005-03-12)
 ·利用OWC服务器端组件动态生成图表  (2005-03-12)
 ·利用WSH作定時工作排程  (2005-03-12)
 ·利用ASP制作EXECL报表方法(一)  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·在ASP中使用数据库
·使用ASP脚本技术
·通过启动脚本来感受ASP的力量
·学习使用ASP对象和组件
·解析asp的脚本语言
·初看ASP-针对初学者
·ASP开发10条经验总结
·ASP之对象总结
·ASP与数据库应用(给初学者)
·关于学习ASP和编程的28个观点
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统