电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> 数据库
连接数据库的ASP树图生成程序(源码)
作者:网友供稿 点击:13
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
<%*****************************
******* 连接数据库的树图生成程序 ********
*****************************
假设你已建立了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的小图;
这些图片可以通过在资源管理器中抓图获得。
-->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·数据库开发个人总结(ADO.NET小结)-.NET教程,数据库应用
·怎么由DataSet将数据导入Excel?-.NET教程,数据库应用
·动态创建SQL Server数据库、表、存储过程-ASP教程,数据库相关
·Win32环境下动态链接库(DLL)编程原理-.NET教程,数据库应用
·封装的ADO.NET对数据库操作经典类-.NET教程,数据库应用
·在DataGridView中获得DataGridViewCheckBoxColumn的状态-ASP教程,数据库相关
·DataGrid使用心得(附大量代码)-ASP教程,数据库相关
·用代码创建DataGrid的多链接及checkbox事件响应-.NET教程,数据库应用
·ADO.NET 的最佳实践技巧-.NET教程,数据库应用
·转载: 用纯ASP代码实现图片上传并存入数据库中

最新文章
·根据数据表中数据,生成Powerpoint幻灯片-ASP教程,数据库相关
·DataGrid中的按钮反选事件与NamingContainer(命名容器)-downmoon-ASP教程,数据库相关
·使用用VB处理MYSQL数据库中二进制数据问题-.NET教程,VB.Net语言
·关于DataGridView中如何接收处于编辑状态下的当前信息-ASP教程,数据库相关
·在DataGridView中获得DataGridViewCheckBoxColumn的状态-ASP教程,数据库相关
·.net下访问Access数据库需要注意的问题-.NET教程,Asp.Net开发
·ActiveMQ4.1+Spring2.0的POJO JMS方案(上)-.NET教程,数据库应用
·ASP.NET 2.0中直接将Access数据库导入到Excel文件中-.NET教程,Asp.Net开发
·NET(C#)连接各类数据库-集锦-.NET教程,C#语言
·ASP.NET2.0连接SQL Server数据库详解-.NET教程,Asp.Net开发




版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号