欢迎光临
我们一直在努力

连接数据库的ASP树图生成程序(源码)

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

<%*****************************

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

*****************************

假设你已建立了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的小图;

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

–>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 连接数据库的ASP树图生成程序(源码)
分享到: 更多 (0)

相关推荐

  • 暂无文章