asp

位置:IT落伍者 >> asp >> 浏览文章

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


发布日期:2024年06月08日
 
利用ASP脚本制作异步装载的树形结构(一)

树形结构是描述层次数据的常见方法本文介绍的树形结构生成程序主要由一个ASP页面二个&avascript函数构成该树

形结构是异步的也就是说节点数据仅在必要时才读取而不是一次性全部发送到客户端

概述

树形结构中所有的节点都必须包含以下属性本身的ID父节点的ID以及本节点的说明(节点文本)本文用到了一个

Access数据库Treemdb来保存这些节点信息Treemdb包含表tblTree其定义如下

字段名称 类型 说明

ElementID 自动编号 节点的唯一标识

ParentElementID 数字 父节点的ID

ElementText 文本 节点文本

本程序利用Treedsn文件定义Treemdb数据源Treedsn内容可以用控制面板中的ODBC数据源配置程序得到内容如下

[ODBC]

DRIVER=Microsoft Access Driver (*mdb)

UID=admin

UserCommitSync=Yes

Threads=

SafeTransactions=

PageTimeout=

MaxScanRows=

MaxBufferSize=

ImplicitCommitSync=Yes

FIL=MS Access

DriverId=

DefaultDir=d:Inetpubwwwroot

DBQ=d:InetpubwwwrootTreemdb

注意运行本文程序时应当修改Treedsn中的DefaultDir和DBQ使其指向正确的目录和文件

客户端功能分两部分实现其一是一个普通的浏览器窗口其二为一个IFRAMEIFRAME是不可见的它的作用是负责浏览器

窗口与服务器之间的通信下面是示例程序的一个运行界面

【图

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

【图

在这里文档的< BODY >是第一层节点(divTree)的容器第一层总共包含四个节点这四个节点又分别是其子节点组的

容器例如上图中divTree包含了divdivdiv和div(它们分别对应一个节点)而div又是divTree的容器

divTree包含了div——divdiv又是divTree的容器而divTree包含了div……

鼠标单击事件由各个节点本身(divdiv……)响应而不是由容器响应节点响应鼠标单击事件后将禁止事件进一步

向上(向父节点)传递这部分功能在GetTree函数内实现请参见该函数代码以了解具体实现方法

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

【图

服务器端代码

客户端脚本向服务器发送的请求包含了一个节点标识服务器脚本GetTreeDataasp查找数据库获得该节点的所有子字节点

并将这些子节点返回给客户程序GetTreeDataasp代码如下:

< % Dim rstTree

Dim strSQL

Dim strData

If RequestQueryString(Level) = Then

ResponseEnd

End If

strSQL = SELECT * FROM tblTree WHERE ParentElementId =

strSQL = strSQL & RequestQueryString(Level) & ORDER BY ElementID

Set rstTree = ServerCreateObject(ADODBRecordset)

rstTreeOpen strSQLFileDSN=d:inetpubwwwroot reedsn

strData =

Do While Not rstTreeEOF

strData = strData & rstTree(ElementId) & | & rstTree(ParentElementId) & | &

rstTree(ElementText) & |

rstTreeMoveNext

Loop

rstTreeClose % >

< HTML >

< BODY OnLoad=parentPopulateTree('< %=strData% >'); >< /BODY >

< /HTML >

注意在实际使用中应相应地更改DSN文件所在路径这段代码并不复杂但请注意以下两点第一客户请求的格式应该为

GetTreeDataasp?Level=节点ID第二返回客户端的节点列表格式为节点标识|父节点标识|节点文本|……

               

上一篇:SQL注入天书―ASP注入漏洞全接触

下一篇:掌握ASP其实只需要6步