连接数据库的ASP树图生成程序(源码)
2005-10-10 20:33
405 查看
<%'*****************************
'******* 连接数据库的树图生成程序 ********
'*****************************
'假设你已建立了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=.;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]..
中添加其孩子
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 ======
'=========================================================
%>
'******* 连接数据库的树图生成程序 ********
'*****************************
'假设你已建立了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=.;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]..
中添加其孩子
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 ======
'=========================================================
%>
相关文章推荐
- 连接数据库的ASP树图生成程序(源码)
- 在ASP.NET项目中的web.config文件里配置数据库连接并在程序代码中获取连接字符串
- asp.net程序优化 尽量减少数据库连接操作
- 解决 web服务器部署常见问题,server application unavailable 和 程序无法连接数据库 的问题(asp.net 2.0 + oracle9i + winXP)
- 关于部署完asp.net程序后不能访问页面也不能连接数据库的问题
- C_连接Access、SQL_Server、Oracle、MySQL、DB2和SyBase六种不同数据库的程序源码和需要注意的点
- C#连接Access、SQL Server、Oracle、MySQL、DB2和SyBase六种不同数据库的程序源码和需要注意的点
- ASP.NET 生成唯一不重复的订单号 支持多用户并发、持多数据库的实现参考(C#.NET通用权限管理系统组件源码组成部分)
- 8.工欲善其事。现在个和数据库连接并生成数据库表相关文件的小程序吧。
- 最近设计了一个生成asp代码的程序,同时也可以作为数据库管理查询的软件,有兴趣的朋友可以去下载!
- 最近设计了一个生成asp代码的程序,同时也可以作为数据库管理查询的软件,发两张图,等完全做好了,给大家共享!
- 解决realmethods生成的程序无法连接数据库的问题
- raptier生成后的程序数据库连接
- asp.net 发布程序到iis后无法连接到oralce数据库问题
- Asp.net(C#)读取数据库并生成JS文件制作首页图片切换效果(附demo源码下载)
- ASP.NET项目中的web.config文件里配置数据库连接并在程序代码中获取连接字符串
- C#连接Access、SQL Server、Oracle、MySQL、DB2和SyBase六种不同数据库的程序源码
- 收了100元辛苦费,写了一个最简单的C#ASP.NET的3层架构例子代码,源码是通过代码生成器生成的【写程序的效率神奇的高】
- asp.net连接access+动软代码生成器生成的OLDB数据库访问类
- 一段asp程序中效率极低的代码,造成连接数据库超时