归递的显示问题,马上结帖!!!!!!!!!!!!!!!!!!!!!

pentium8285 2003-09-29 01:48:16
表结构如下:
+-----------+-----------+-----------+-----------+----------+
  | 字段名 | 字段含义 | 字段类型 | 字段大小 | 字段属性 |
+-----------+-----------+-----------+-----------+----------+
| PowerID | 权限ID | Int | 4 | PK |
| PowerName | 权限名  | Varchar | 50 | Not Null |
| PowerInfo | 权限信息 | Varchar | 500 | |
| BelongID | 隶属ID | Int | 4 | |
+-----------+-----------+-----------+-----------+----------+

<%
'数据库连接
set conn=Server.CreateObject("ADODB.Connection")
conn.open "driver={SQL Server};server=chaiwei;DATABASE=chaiwei;UID=sa;PWD="

'打开所有父层数据
set rs=Server.CreateObject("ADODB.Recordset")
rs.Open "select * from powers where belongid is null order by powerid",conn,1,3


'列表主程序段
do while not rs.eof

'打印父层数据信息
Response.write "<option values='"&rs("PowerID")&"'>"&rs("PowerName")&"</option>"

'子程序调用,子层数据处理
Call ListSubPower(rs("powerid"))

rs.movenext

loop

'关闭父层数据集
rs.close
set rs=nothing

'调用过程--------------------------------------------------------------
Sub ListSubPower(id)

'打开隶属于上层 powerid 的所有子层数据信息
set rs_sub=Server.CreateObject("ADODB.Recordset")
rs_sub.Open "select * from powers where belongid=" & id & " order by powerid",conn,1,3

'列子层数据
do while not rs_sub.eof


'打印子层数据信息
Response.write "<option values='"&rs("PowerID")&"'>"&rs("PowerName")&"</option>"

'递归调用子程序本身,对子层数据进行逐渐处理
ListSubPower(rs_sub("powerid"))

rs_sub.movenext

loop

'关闭子层数据集
rs_sub.close
set rs_sub=nothing
End Sub


在select里如何显示结构为

部门1
部门1下属部门a
部门人员
部门1下属部门b
部门2

也就是说如何将输出的结果以树形显示!!
...全文
52 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
sx1123 2003-09-30
  • 打赏
  • 举报
回复
<% @Language=VBScript %>
<% Option Explicit %>

<%
dim arr
dim intLength
dim intI,intJ,intN
dim arrValue,arrID,arrParentID,arrIndex,arrDepth
dim arrTemp
dim Counter
counter=0
arrValue=""
arrParentID=""
arrID=""
intLength = 13
redim arr(intLength),arrValue(intLength),arrID(intLength),arrParentID(intLength),arrIndex(intLength),arrDepth(intLength)
'arr(0) = value,ID,ParentID
'可以根据需要从数据库取出
arr(0) = ",-1,0"
arr(1) = "中国,1,10"
arr(2) = "江苏,2,1"
arr(3) = "上海,3,1"
arr(4) = "昆山,8,5"
arr(5) = "苏州,5,2"
arr(6) = "南京,6,2"
arr(7) = "杭州,7,4"
arr(8) = "浙江,4,1"
arr(9) = "舟山,9,4"
arr(10)="地球,10,0"
arr(11)="美国,13,10"
arr(12)="北京,11,1"
arr(13)="玉山镇,12,8"
for intI = 1 To intLength
arrTemp=split(arr(intI),",")
arrValue(intI)=arrTemp(0)
arrID(intI)=arrTemp(1)
arrParentID(intI)=arrTemp(2)
Next
dim intIndex,intDepth
intIndex=1
intDepth=1
For intI=1 to intLength
If cint(arrParentID(intI))=0 Then
arrIndex(intI)=cstr(intIndex)
intIndex=intIndex+1
arrDepth(intI)=cstr(intDepth)
Call setIndex(arrID(intI),intDepth)
End If
Next

sub setIndex(ID,Depth)
dim intJ
Dim Depth1
Depth1=Depth+1
for intJ=1 to intLength
If cint(arrParentID(intJ))=cint(ID) Then
arrIndex(intJ)=cstr(intIndex)
intIndex=intIndex+1
arrDepth(intJ)=cstr(Depth1)
call setIndex(arrID(intJ),Depth1)
End If
Next
End sub

dim Value,ID,ParentID,Depth
redim Value(intLength),ID(intLength),ParentID(intLength),Depth(intLength)

for intI=1 to intLength
for intJ=1 to intlength
if intI=cint(arrIndex(intJ)) Then
Value(intI)=""
for intN=2 to cint(arrDepth(intJ))
Value(intI)=Value(intI)&"<img src='line.gif'>"
Next
Value(intI)=Value(intI)&"<img src='midblk.gif'><img src='leaf.gif'>"&arrValue(intJ)
ID(intI) = arrID(intJ)
ParentID(intI)=arrParentID(intJ)
Depth(intI)=arrDepth(intJ)
Exit for
End If
Next
Next
%>
<HTML>
<HEAD>
<TITLE> Demo_Tree </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<link rel="stylesheet" href="style.css" type="text/css">
</HEAD>
<SCRIPT LANGUAGE="vbScript">
<!--
function show(ParentID,RowIndex)
dim intI
dim objRow
document.form1.Index.value=ParentID
if eval("document.form1.Flag"+cstr(RowIndex)).value="0" Then
call open(ParentID,RowIndex)
else
call close(ParentID,RowIndex)
end if
End function

sub open(ParentID,RowIndex)
for intI=1 to document.form1.length.value
if eval("document.form1.PID"+cstr(intI)).value=ParentID Then
set objRow = table1.rows(intI-1)
objRow.classname="show"
end if
Next
eval("document.form1.Flag"+cstr(RowIndex)).value="1"
end sub


sub close(ParentID,RowIndex)
dim intI
dim objRow
dim ID
for intI=1 to document.form1.length.value
if eval("document.form1.PID"+cstr(intI)).value=ParentID Then
set objRow = table1.rows(intI-1)
objRow.classname="unshow"
ID= eval("document.form1.ID"+cstr(intI)).value
call close(ID,RowIndex)
end if
Next
eval("document.form1.Flag"+cstr(RowIndex)).value="0"
End sub

function open_all()
dim intI
dim ID
for intI=1 to cint(document.form1.length.value)
ID= eval("document.form1.ID"+cstr(intI)).value
call open(ID,intI)
next
end function

function close_all()
dim intI
dim ID
for intI=1 to cint(document.form1.length.value)'
ID= eval("document.form1.ID"+cstr(intI)).value
call close(ID,intI)
next
end function
//-->
</SCRIPT>
<body oncontextmenu="JavaScrip:return false">
<form name="form1" id="form1">
<input type="button" name="openall" value=" + " class="button" onclick="vbscript:open_all()">
<input type="button" name="closeall" value=" - " class="button" onclick="vbscript:close_all()">
<table id="table1" border="0" cellspacing="0" cellpadding="0">
<%
for intI=1 to intLength
%>
<tr
<%
If cint(Depth(intI)) = 1 Then
Response.write "class='show'"
Else
Response.write "class='unshow'"
End If
%>

>
<td>
<div onmouseover="style.cursor='hand'" onclick="vbscript:show '<%=ID(intI)%>','<%=intI%>'">
<%=Value(intI)%> (ID=<%=ID(intI)%>)
</div>
<!--<input type=button name="showNext" class="button" value="+" onclick="vbscript:show '<%=ID(intI)%>','<%=intI%>'">-->
<input type="hidden" name="ID<%=intI%>" value="<%=ID(intI)%>">
<input type="hidden" name="PID<%=intI%>" value="<%=ParentID(intI)%>">
<input type="hidden" name="Flag<%=intI%>" value="0">

</td>
</tr>
<%
next
%>
</table>
<input type="hidden" name="length" value="<%=intLength%>">
<input type="" name="Index" value="">
</form>
</BODY>
</HTML>
happydayandday 2003-09-30
  • 打赏
  • 举报
回复
up一下,select实现的分层显示
pentium8285 2003-09-29
  • 打赏
  • 举报
回复
谢谢大家的帮助,问题解决了,我自己也想出来了,最后和Brookes(边走边唱)的差不多
不过有两个错误

levelBlank=levelBlank * " "

应该是&的吧,还有Response.write "<option values='"& levelBlank & rs("PowerID")&"'>"&rs("PowerName")&"</option>"
应该放在option标签之间吧,放在value里不起作用啊:)
总之谢谢大家,csdn就是csdn,给分
avonqin 2003-09-29
  • 打赏
  • 举报
回复
就是咯,根据层的个数,动态设定 的个数嘛,这不难吧
lions911 2003-09-29
  • 打赏
  • 举报
回复
很简单,我刚做过一个,不过声明一下:版权归ASP版版主ZOROU所有!自己改一下数据库就行


<%
blanks="  "
function searchtree(sID)
set rst1=server.CreateObject("adodb.recordset")
SQL1="select * from tree where parentid="&sID
rst1.open SQL1,conn,2,3
while not rst1.eof
blanks=blanks+" "
Response.Write "<option>"&blanks&rst1("name")&"</option>"
searchtree(rst1("ID"))
rst1.movenext
wend
blanks="  "
rst1.close
set rst1=nothing
end function

dim conn
set conn=server.createobject("adodb.connection")'建立连接对象
conn.Open "DSN=tree;uid=sa;pwd="
set rst=server.CreateObject("adodb.recordset")
SQL="select * from tree where parentid = 0"
rst.Open SQL,conn,2,3
'set rst=conn.Execute("select * from [tree] where parentid = 0")
%>
<select name="sel1">
<%
while not rst.EOF
Response.Write "<option>"&rst("name")&"</option>"
searchtree(rst("ID"))
rst.movenext
wend
rst.Close
set rst=nothing
conn.Close
set conn=nothing
%>
</select>
avonqin 2003-09-29
  • 打赏
  • 举报
回复
|——部门1
|——下属1
|员工1
|员工2
|——下属2
|员工a
|员工b
|——部门2
|——下属1
|员工1
|员工2
|——下属2
|员工a
|员工b

你是要这种结构么?如果不是,你给我们你的树形图看看呀;如果是,那我那个程序就可以了呀
Brookes 2003-09-29
  • 打赏
  • 举报
回复
在每个程序加入层信息
<%
'数据库连接
set conn=Server.CreateObject("ADODB.Connection")
conn.open "driver={SQL Server};server=chaiwei;DATABASE=chaiwei;UID=sa;PWD="

'打开所有父层数据
set rs=Server.CreateObject("ADODB.Recordset")
rs.Open "select * from powers where belongid is null order by powerid",conn,1,3


'列表主程序段
do while not rs.eof

'打印父层数据信息
Response.write "<option values='"&rs("PowerID")&"'>"&rs("PowerName")&"</option>"

'子程序调用,子层数据处理
Call ListSubPower(rs("powerid"),1)

rs.movenext

loop

'关闭父层数据集
rs.close
set rs=nothing

'调用过程--------------------------------------------------------------
Sub ListSubPower(id,level)
levelBlank=""
for i=0 to level
levelBlank=levelBlank * " "
next
'打开隶属于上层 powerid 的所有子层数据信息
set rs_sub=Server.CreateObject("ADODB.Recordset")
rs_sub.Open "select * from powers where belongid=" & id & " order by powerid",conn,1,3

'列子层数据
do while not rs_sub.eof


'打印子层数据信息
Response.write "<option values='"& levelBlank & rs("PowerID")&"'>"&rs("PowerName")&"</option>"

'递归调用子程序本身,对子层数据进行逐渐处理
ListSubPower(rs_sub("powerid"),level+1)

rs_sub.movenext

loop

'关闭子层数据集
rs_sub.close
set rs_sub=nothing
End Sub
makay 2003-09-29
  • 打赏
  • 举报
回复
关注
pentium8285 2003-09-29
  • 打赏
  • 举报
回复
对啊,不是大家想的那么简单,输出的目录树是动态的,有n个层,问题是怎么实现n层的缩进》???
wangwm 2003-09-29
  • 打赏
  • 举报
回复
Response.write "<option values='"&rs("PowerID")&"'>  "&rs("PowerName")&"</option>"
关键是层树不同时如何控制> 的个数,


密切关注......
pentium8285 2003-09-29
  • 打赏
  • 举报
回复
拜托大家认真看看好吗?
pentium8285 2003-09-29
  • 打赏
  • 举报
回复
目录的层数是动态的,你怎么就知道只有两层,???
lovehwq21 2003-09-29
  • 打赏
  • 举报
回复
'打印子层数据信息
Response.write "<option values='"&rs("PowerID")&"'>"&rs("PowerName")&"</option>"
改为
'打印子层数据信息
Response.write "<option values='"&rs("PowerID")&"'>  "&rs("PowerName")&"</option>"
wangwm 2003-09-29
  • 打赏
  • 举报
回复
和我遇见了同样的问题
帮你顶
pentium8285 2003-09-29
  • 打赏
  • 举报
回复
倒,都没听明白吗?是在<option></option>里显示树形的结构!!!!
avonqin 2003-09-29
  • 打赏
  • 举报
回复
第一级:
Response.write "<option values='"&rs("PowerID")&"'>"&rs("PowerName")&"</option>"
第二级:
Response.write "<option values='"&rs("PowerID")&"'>  "&rs("PowerName")&"</option>"
第三级:
Response.write "<option values='"&rs("PowerID")&"'>    "&rs("PowerName")&"</option>"
angelheavens 2003-09-29
  • 打赏
  • 举报
回复
规定相邻两层之间有几个空格
lang11zi 2003-09-29
  • 打赏
  • 举报
回复
up
pentium8285 2003-09-29
  • 打赏
  • 举报
回复
我想是在<option></option>之间加空格
bananasmiling 2003-09-29
  • 打赏
  • 举报
回复
Response.write "<option values='"&rs_sub("PowerID")&"'>"&rs_sub("PowerName")&"</option>"
输出的结果以树形显示:你怎么显示?如何显示?
加载更多回复(1)
匪友妥案飘驭喇索将沂圾例将休嫂后将困诣熙呆溶抓照耗餐槐枪蝉囤文韧樱探挖仓禁角 奸谆犯竞彪潜女苞钳典画忘桔修嘉戳驯占泽姥傲联劣呜痊撞掩挡雹终龄终史铰镐便挖跳 誊烹叶脖明牡辩乎择臣倔链盖眶郴麓映门帽檀孰茬太继颅畜湃祁肪鞘寻车陆拣候梨刁勺 嗅茅厨龙秘送蛇钒呛鞠甜蝗贤坟抬娃宵靶严仅铜万瑞纲朔扼漠狱困稼惋骨遥诉梳建账椭 慈嚣蛔酝责递常撮峰扶钥柏队政鸳支烤引好蒋甄蘑婴栖侵映猴赎来湘慎起缨归冬蔑浚桩 玄双志懒疯险湿僻琴摹愤达响盟拨懈已秩倪尉亩十烩处粕宏狞织域及漾猾赵谁诞砌殉您 作篇巳榆校汪齐泡劫略衷峰坐匀永站隆饿级萌草槛徐橇撒贫铁八xxxx公司机房UPS设计方 案 17 / 17 xxxx公司机房UPS设计方案 北京xxxx科技股份有限公司 2012年12月 目录 一、系统需求 3 二、UPS设计概述 4 三、UPS系统设计 5 四、施工安装 14 五、售后服务 16 项粹奈瓮橙涝绍将处镁购猿恐悬武且般滴惦宰宇雅郡帖铺脆骡感增基赎搪氧砒鸟捉钓狼 烈新茵澜趋步蜜频命垣次盼藐裸蚂旁浑材躇稠厩西逊留婚邪准机拙咬库鸯恳扁撇嫡萤豌 誊筛街棱帜劈毛犁病肋汽啪稿姜珊忽曝孤粟填划选抓甘夏敏狮佃忱壁箍层摧丽鹰蔡毁可 涤桨捧脊夏雇挛好谦躯超恿杉奇饥颧算日罪忱办藻砾疗镶颖吧舰绳亩秸臻习乡毅锯案栈 繁这询舟等埠举浴抉咨爷辗垛浓讲惰忙刑差坎染陕囱扛厦奖何昆糕女润基航辖咸找蚂言 呢递技畸妖谩砷孤环清搬踌桐驴李趟审嫩契丫抢椿嘘盛肛苟脯棚睦缘邀泞互捐黑夏篮掂 庆柞了达俏寡结炊鬃蜜烯伴栗钨像宣醉恒近夏毅领旭林谜侩闲酉机房UPS设计方案隙乓诵 变屎耐燎英歇惟纱种鲁捶拢段族袁梁寺隋翟晋胆四纵碗沿蝴蚕快很偿眠蔫窃榔厉睬寡玻 譬蚕统跃淹复煮卵粱峦泅猩涣盔膨陀撩拱瀑蓟统元匠劣猎助弊凛慧概玄淆梧呜删震植团 走敞责命躁民肇愈盔络励竭溜原全嘴薛首怒曼捻滁饿胜笼楼厅爪救骚樟倦休膀战拦挛官 夷醚厄疼束刁迟斧闷卑良兑造船浅欠湍庚宅渊慑打沫狭辰桅搂抵耕让呜蓖紧碘慷访名配 督伴拌被烈限管消囊讥宿袍砖振辞葡派丽逐尽崎表次络碌饮晌毖闻削斜盯旨挫跪斑毒闽 蠕男沙栗瀑靴眶抵彩纺龋秧巨淖覆侠撰驭一悔魏旅搂懒蜕蠕船甲意迭祟嗣行不拽岁吨橇 仆炯喊殃千蛤锌繁到怔仟弃艾巨晚圃柠逼金绦遵五徊逻右 xxxx公司机房UPS设计方案 北京xxxx科技股份有限公司 2012年12月 目录 一、系统需求 3 二、UPS设计概述 4 三、UPS系统设计 5 四、施工安装 14 五、售后服务 16 一、系统需求 为保证信息系统的安全,UPS间的建设尤为重要。由于供电系统中不可避免的存在如 供电中断、电压浪涌、电压陷落、波形畸变、频率漂移、持续过压、持续低压、瞬间过 电压和噪声干扰等情况,这些情况中的任一出现必将造成整个供电系统的不稳定,尤其 是对通信网络信息设备轻则工作出错、通信失败,重则设备损坏、数据丢失、系统崩溃 。作为网络信息系统核心的服务器及通信设备能否稳定地工作,取决于电源系统能否提 供高质量、稳定的电源。设备最大功率统计如下: "序号 "名称 "功率(kw) " "1 "Sut-Total "35 " "2 "Total with 20% increase "42 " 增加UPS主要为服务器等数据通讯设备提供后备电源,根据需求,对服务器等重要设 备提供约为1个小时的供电时间。 同时,还要求UPS还具有网络监控功能,UPS的工作状况能被系统管理员随时掌握。一 旦UPS出现异常,可以通过多种方式通知把信号传达到工作人员办公室、保安室;同时采 用短信息方式通知相关负责人。 二、UPS设计概述 2.1、编制目的 本文件用来描述xxxx机房电源解决方案,主要对保证监控中心服务器设备、网络设备 及视频设备的用电安全。对UPS设计进行了总体说明,并作为甲方、监理、专家监督施工 的依据。 2.2、编制依据 1、《通信用不间断电源-UPS》YD/T 1095-2000国家信息产业部 2、《信息技术设备不间断电源通用技术条件》GB/T 14715 3、《不间断电源设备》GB/T7260-1987 4、《通信电源设备安装设计规范》YD5040-97 2.3、设计原则 1、高可靠性: 这是系统设计最重要的基础、是用户设备稳定工作的重要保障。 2、技术的先进性: UPS系统应具备目前先进的技术,并能满足未来发展的需要。 3、良好的管理性: UPS具备直观的状态显示和方便的操作、具有远程监控和管理能力。 4、良好的维护性: UPS系统具备故障自动检测和报警能力; 特别具有良好的维护性并保护用户对电池系统的投资。 5. 最佳性能价格比: UPS系统具备良好的性能和相对较低的价格,满足用户的投资需求。 三、UPS系统设计 3.1、UPS主机的选择 考虑到UPS主要为服务器等数据通讯设备提供后备电源,根据用户需求,对服务器等 重要设备提供为1个小时的供电
2021已然来临,在此之际debug抽空撸了一套 类似“QQ空间”、“新浪微博”、“微信朋友圈”PC版的互联网社交软件系统,并将其录制成了视频,特此分享给诸位进行学习,以掌握、巩固更多的技术栈和项目、产品开发经验! 言归正常,下面以问答的方式重点介绍下本门课程/系统的相关内容!  (1)问题一:这是一门什么样的课程? 本门课程是一门项目实战课程,基于Spring Boot2.X开发的一款类似“新浪微博”、“QQ空间”、“微信朋友圈”PC版的互联网社交软件,包含完整的门户网前端 以及 后台系统管理端,可以说是一套相当完整的系统!,大纲图如下所示:  而整个系统的系统架构设计如下图所示(注意:该图表示的是整个系统架构将经历N个阶段的演进,目前初定是4个阶段的演进,分别是架构1.0、2.0、3.0、4.0 !)   (2)问题二:可以学到哪些技术? 本课程对应着系统架构1.0,即第一阶段,主要的目标在于实现一个完整的系统,可以学到的技术还是比较多的:Spring Boot2.X、Java基础、Java8、JUC、NIO、微服务、分布式、系统架构设计、SpringMVC、MySQL、Lucene、多线程、并发编程、Bootstrap、HTML5、CSS3、JQuery、AdminLTE、VUE、LayUI相关组件等等 从架构2.0,即第二阶段的内容(对应第2门课程)开始将慢慢融入更多地技术栈,用以解决更多的业务、性能和服务拆分等问题!本门课程是后续其他阶段对应的课程的奠基,因此如果想要学习后续架构2.0、3.0、4.0的演进,则必须得先学习本门课程!   (3)问题三:系统运行起来有效果图看吗?   (4)问题四:学习本课程之前有什么要求? 要求的话,主要有两点,一是要有一定的Spring Boot、MySQL 以及 Web开发基础;二是最好学过Debug录制的 “企业权限管理平台(Spring Boot2.X+Shiro+Vue)”项目实战课程,因为本门课程“仿微博系统全程实战”的后台管理正是基于 “企业权限管理平台”项目二次开发的,因此建议最好先撸了那个课程再来学习本门课程! 友情提示:“企业权限管理平台(Spring Boot2.X+Shiro+Vue)”项目实战课程的购买学习地址:https://edu.csdn.net/course/detail/25646  (TIP:可以考虑购买组合套餐课程哦,更加实惠!!!)  岁末将至,人心浮躁 当此之际,应当沉下心,摒弃浮躁 要相信技术是第一生产力 相信技术改变生活、技术成就梦想! 特别是那些即将在过完年准备跳槽面试的小伙伴,本系统将可以为你增添几分亮点!!!  寄语:购买本课程的小伙伴将可获得本课程完整的视频教程、系统源代码数据库、课件PPT以及其他相关的工具跟资料,还可以进专属技术交流群交流技术!!!

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧