手机站
网通分站
电信主站
密 码:
用户名:
热门关键字:  虚拟主机  cn域名  asd  ddd  域名注册
当前位置 : 主页>网络编程>Asp编程>列表

ASP高级学习:数据库动态生成树形目录

来源:互联网 作者:west263.com 时间:2008-02-23 点击:
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

</NodeItem>
<NodeItem>
<NodeName>我的办公桌\公告通知\电子邮件\已发邮件</NodeName><!--节点名称-->
</NodeItem>
<NodeItem>
<NodeName>我的办公桌\日程安排</NodeName><!--节点名称-->
<ImageIndex>0</ImageIndex>
</NodeItem>
<NodeItem>
<NodeName>我的办公桌\日程安排\日历</NodeName><!--节点名称-->
</NodeItem>
</NaviTree>

2. 代码实现

通过以下语句通知智岛目录树控件打开XML文档:

OTree.OpenXMLFile("")

其中引号内XML文档的绝对路径,例如:
OTree.OpenXMLFile("C:\OTree.xml")

运行效果见下图:

已看见你频频点头的样子,但又喃喃自语:如果要根据数据库中内容生成树形目录该...?呵呵,下面我们就进入正题(敢情前面这么多文字是骗稿费的啊?谁?嘘...,小声点,千万别让小编听见):

四、 基于数据库生成树形目录

1. XML文档格式

将树形目录的节点存入数据库,为我们动态形成树形目录打下良好的基础。当然,也有些目录树是表现一个数据库中的数据结构(父节点是数据库名,子节点是数据表)。不管如何,有了前面的基础,现在我们所需做的只是将数据库的内容形成上面格式的XML文档。下面有一份ASP源码,将数据库中结构形成XML文档,其中变量datasource存储传递过来的数据库名称。

<?xml version="1.0" encoding="GB2312"?>
<NaviTree>
<%
dim datasource
datasource=request("datasource")
%>
<NodeItem>
<NodeName><%=datasource%>
<NodeType></NodeType>
<NodeData></NodeData>
<ImageIndex>0</ImageIndex>
<Creator></Creator>
<RightDepartmen>|开发部|市场部|</RightDepartmen>
<RightUser></RightUser>
<Lock>0</Lock>
</NodeItem>
<%

strConn="DBQ=" server.mappath("db\"&datasource) ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set objConn=server.createobject("Adodb.connection")
objConn.open strConn
set rsSchema=objConn.openSchema(20)
rsSchema.movefirst
Do Until rsSchema.EOF
if rsSchema("TABLE_TYPE")="TABLE" then
%>
<NodeItem>
<NodeName><%=datasource%>\<%=rsSchema("Table_Name")%></NodeName>
<NodeType>href</NodeType>
<NodeData><%=rsSchema("Table_Name")%></NodeData>
<ImageIndex>4</ImageIndex>
<Creator></Creator>
<RightDepartmen>|开发部|市场部|</RightDepartmen>
<RightUser></RightUser>
<Lock>0</Lock>
</NodeItem>
<%
end if
rsSchema.movenext
Loop
set objConn=nothing
%>

</NaviTree>

2. 代码实现

这时候的接口方法跟直接打开XML文档的不一样了:

OTree.SetNodeXML(OTree.HttpGet("http://www.oapro.com/ostarocx/sample/Dataman/OTree.asp","datasource=OTree.mdb"))

其中方法HttpGet有二个参数,第一个参数为我们上面介绍的实现数据库转换XML格式的网页地址,一定要为网址格式,不能用相对或绝对路径(因为目前该方法尚不支持),第二个参数为传递到该文件的参数,这里我们传递的是数据库名称。

按照上面的介绍你很快的实现了一个树形目录,点根节点,展开,点父节点,展开,再点...,咦,怎么没反应?你希望有什么反应?噢,不好意思,差点忘介绍了:

五、 响应节点事件

智岛树形目录控件提供了一个接口方法用以响应节点事件:

EventTreeSelchanged(strItemName, strItemData,strItemType)

其中:

strItemName 节点名称
strItemData 节点数据
strItemType 节点类型
这三个参数由智岛树形目录控件提供给我们开发者,供我们调用。

我们可通过脚本实现对事件的触发,以下是一范例代码:

<SCRIPT FOR="OTree" EVENT="EventTreeSelchanged(strItemName, strItemData, strItemType)" LANGUAGE="JavaScript" >
alert(strItemName);
</SCRIPT>

以上代码实现了点击节点时,弹出一对话框显示该节点的名称。

六、 范例

嗯,好累呀!用敲键盘敲得差点变形的小手揉揉看屏幕看得发酸的大眼睛,又闪过一个念头,再给出一个范例吧:http://www.oapro.com/ostarocx/sample/ogrid_f 。在这个范例中,从下拉框中选择数据库名称后树形目录的内容会发生变化,点击节点会显示该节点所代表的数据表中的数据内容。整个范例充分展示了上面文章内容的技术细节。下面是范例截图:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

共2页: 上一页 [1] 2 下一页
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名
注册