分享
 
 
 

连接数据库的ASP树图生成程序

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

<%'*****************************

'******* 连接数据库的树图生成程序 ********

'*****************************

'假设你已建立了SQLServer数据库UnitTree,并在该库中建立了表:

'Units(ID 单位序号整数唯一,Name 单位名称字符串,UpID 上级单位序号整数)

'注:UpID=0表示该单位是根结点单位;

'输入一些数据如:(1,AA,0)(2,AABB,1)(3,AACC,1)(4,AABB11,2)

'以便进行下面的程序测试。

%>

<% '建立数据库连接

set conn=server.createobject("adodb.connection")

conn.open "provider=sqloledb;data source=YourSrcName;user id=sa;password=;database=UnitTree"

%>

<%'子过程:生成树图子结点数据

Sub TreeNode(Code)

SQLUnit="select ID,Name"&_

" from Units"&_

" where UpID="&Code&""&_

" order by ID"

set rsUnit=conn.Execute(SQLUnit)

Do while not rsUnit.Eof

Response.Write("Node"&rsUnit("ID")&"=appendChild("&"Node"&Code&",folderNode('"&rsUnit("Name")&"','"&rsUnit("ID")&"',0))"&chr(10))

call TreeNode(rsUnit("ID"))

rsUnit.movenext

Loop

End Sub

%>

<HTML>

<HEAD>

<title>演习分析</title>

<Script LANGUAGE="javascript">

/****************************** 生成树图数据 *********************************/

function generateTree()

{

//生成树图数据

//-----VBScript-----

<%

''显示单位

SQLUnit0="select ID,Name"&_

" from Units"&_

" where UpID=0"&_

" order by ID"

set rsUnit0=conn.Execute(SQLUnit0)

//根结点foldersTree

Response.Write("foldersTree=folderNode('"&rsUnit0("Name")&"','"&rsUnit0("ID")&"',1)"&chr(10))

Response.Write("Node"&rsUnit0("ID")&"=foldersTree"&chr(10))

call TreeNode(rsUnit0("ID")) //子结点数据

%>

}

/**************************** 生成树图数 结束 *******************************/

</Script>

<Script LANGUAGE="javascript">

/************************ 相关函数 *********************************/

// 生成一个节点

function folderNode(name,value,flagOpen)

{

var arrayAux

arrayAux = new Array

arrayAux[0] = flagOpen //结点关闭0或打开1

arrayAux[1] = value //

arrayAux[2] = name //名称

return arrayAux

}

//在arrayAux[3]..[n]中添加其孩子

function appendChild(parent, child)

{

parent[parent.length] = child

return child

}

//画结点

//参数 foldersNode:结点

// doc :document对象

// level :结点的层次

// lastNode :是否最末尾的结点

// leftSide :图片

function redrawNode(foldersNode, doc, level, lastNode, leftSide)

{

FileName="Content.asp" //设置超链接文件,可根据你的情况改写……………

var j=0

var i=0

doc.write("<table border=0 cellspacing=0 cellpadding=0>")

doc.write("<tr><td valign = middle nowrap>")

doc.write(leftSide)

/******分层+/-号**************************************/

if (level>0)//不是根节点

{

if (lastNode) //最后的节点

{

if (foldersNode.length > 3)//有孩子

{

if (foldersNode[0])//且打开

{

doc.write("<A href='javascript:top.openBranch(\"" + foldersNode[2] + "\")'>")

doc.write("<img border=0 src=../../Images/lastnode-.gif width=16 height=22></a>")

}

else

{ //但关闭

doc.write("<A href='javascript:top.openBranch(\"" + foldersNode[2] + "\")'>")

doc.write("<img border=0 src=../../Images/lastnode+.gif width=16 height=22></a>")

}

}

else //没孩子

doc.write("<img src='../../Images/lastnode.gif' width=16 height=22>")

leftSide = leftSide + "<img src='../../Images/blank.gif' width=16 height=22>"

}

else //非最后节点

{

if (foldersNode.length > 3)//有孩子

{

if (foldersNode[0])//且打开

{

doc.write("<A href='javascript:top.openBranch(\"" + foldersNode[2] + "\")'>")

doc.write("<img border=0 src=../../Images/Node-.gif width=16 height=22></a>")

}

else

{ //但关闭

doc.write("<A href='javascript:top.openBranch(\"" + foldersNode[2] + "\")'>")

doc.write("<img border=0 src=../../Images/Node+.gif width=16 height=22></a>")

}

}

else //没孩子

doc.write("<img src='../../Images/node.gif' width=16 height=22>")

leftSide = leftSide + "<img src='../../Images/vertline.gif' width=16 height=22>"

}

/******手形图标与超链接**********/

doc.write("<a href='"+FileName+"?ID="+foldersNode[1]+"&Name="+foldersNode[2]+"' target=folderFrame><img src=../../Images/closedfolder.gif width=24 height=22 border=noborder></a>")

/********名称与超链接********/

doc.write("<td valign=middle align=left nowrap>")

doc.write("<a href='"+FileName+"?ID="+foldersNode[1]+"&Name="+foldersNode[2]+"' target=folderFrame><font size=2 face='宋体'>"+foldersNode[2]+"</font></a>")

//以上超链接提供了ID,Name的QueryString值……………………………………

}

else//根节点

{

/******手形图标与超链接**********/

doc.write("<a href='"+FileName+"?ID="+foldersNode[1]+"&Name="+foldersNode[2]+"' target=folderFrame><img src=../../Images/closedfolder.gif width=24 height=22 border=noborder></a>")

/********名称与超链接********/

doc.write("<td valign=middle align=left nowrap>")

doc.write("<a href='"+FileName+"?ID="+foldersNode[1]+"&Name="+foldersNode[2]+"' target=folderFrame><font size=2 face='宋体'>"+foldersNode[2]+"</font></a>")

}

doc.write("</table>")

///////////////////////////////////////////////////////

if (foldersNode.length > 3 && foldersNode[0]) //有孩子且打开则递归显示节点

{

level=level+1

for (i=3; i<foldersNode.length;i++)

if (i==foldersNode.length-1)

redrawNode(foldersNode[i], doc, level, 1, leftSide)

else

redrawNode(foldersNode[i], doc, level, 0, leftSide)

}

}

//当用户点击分层的+/-号时响应,被openBranch调用

function clickOnFolderRec(foldersNode, folderName)

{

var i=0

if (foldersNode[2] == folderName)

{

if (foldersNode[0])//若为打开状态时,则将其关闭

foldersNode[0] = 0

else

foldersNode[0] = 1

}

else

{

for (i=3; i< foldersNode.length; i++)

clickOnFolderRec(foldersNode[i], folderName)

}

}

//打开或关闭结点(当用户点击分层的+/-号时响应)

function openBranch(branchName)

{

clickOnFolderRec(foldersTree, branchName)

timeOutId = setTimeout("redrawTree()",100)

}

//显示树图

function redrawTree()

{

var doc = top.treeFrame.window.document

//记录当前滚动条位置

posX = doc.body.scrollLeft

posY = doc.body.scrollTop

doc.open()

doc.write("<body link='#0000ff' vlink='#0000ff' alink='##ff0000' bgcolor='white'>")

redrawNode(foldersTree, doc, 0, 1, "")

doc.close()

doc.body.scrollLeft = posX

doc.body.scrollTop = posY

}

//网页载入时响应的函数

function initializeTree()

{

generateTree()

redrawTree()

}

/*********************** 相关函数 END *************************/

</Script>

</HEAD>

<FRAMESET cols="220,*" onLoad="initializeTree()" framespacing="1">

<FRAME src="Pleft.htm" name="treeFrame" target="_self" scrolling="auto">

<FRAME SRC="PRight.htm" name="folderFrame" scrolling="auto">

</FRAMESET>

</HTML>

<%

'以上程序在WIN2000Server+IIS5.0+SQLServer2000下测试通过。

'=========================================================

'======= 作者:夏春涛 E-Mail:Bluesky_521@yeah.net ======

'=========================================================

%>

<!--

PLeft.htm文件的内容:

<html>

<body>

<p align=center><font size=2>正在生成树图,请稍候...</font>

</body>

</html>

PRight.htm文件的内容:

<html>

<body>

<p align=center><font size=2>欢迎访问!</font>

</body>

</html>

Content.asp文件根据你的需要自己编写。

程序执行的效果,与Windows的资源管理器几乎一样。

closedfolder.gif是一个22*22的小图,其余的图片是16*22的小图;

这些图片可以通过在资源管理器中抓图获得。

-->

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有