asp无限分类循环问题,

----------------------------------------------------------------FunctionViewClass(top... ----------------------------------------------------------------
Function ViewClass(topid,k)'树型列表显示分类名
Set Rss = Conn.Execute("select * from Class where topid="&topid&" order by num,id")
Do While Not Rss.EOF
Response.Write "<tr><td height='20'>|-" & tmp(k) &""& Rss("ClassName") &"  <a href='User_Class.asp?action=classadd&topid="&Rss("id")&"'>增加</a>  <a href='User_Class.asp?action=classedit&topid="&Rss("id")&"'>修改</a>  "
%>
<a href="#"id")%>';return true;}return false;}">删除</a>
<%
Response.Write ViewClass(Rss("id"),k+1)
Rss.MoveNext
Loop
Rss.close
set Rss = nothing
End Function
Function tmp(n)'显示缩进符号
For i = 0 To n
tmp = tmp & "-"
Next
End Function
————————————————————————————————————
这个是函数调用
-----------------------------------------------------------------------
<%
Response.Write("<table border='0' cellspacing='0' cellpadding='0' width='300'>")
Set Rs = Conn.Execute("select * from Class where topid=0 order by num,Id")
Do While Not Rs.EOF
Response.Write "<tr><td height='25'>|-<font color='red'>" & Rs("ClassName") & "</font>  <a
href='User_Class.asp?action=classadd&topid="&Rs("ID")&"'>增加</a>  <a href='User_Class.asp?
action=classedit&topid="&Rs("ID")&"'>修改</a></td></tr>"
Call ViewClass(Rs("ID"),0)
Rs.MoveNext
loop
Rs.Close
set Rs=nothing
Response.Write("</table>")
%> </td>
</tr>
</table>
------------------------------------------------------------------------
这个这段代码显示的结果。
|-国内新闻 增加 修改
|--北京新闻 增加 修改 删除
|-国际新闻 增加 修改
|--美国新闻 增加 修改 删除
正确的应该是
|-国内新闻 增加 修改
|--北京新闻 增加 修改 删除
|--南京新闻 增加 修改 删除 (为什么这个不显示呢?)|
-国际新闻 增加 修改
|--美国新闻 增加 修改 删除
库记录如下:
ID CLASSNAME TOPID ROOTID NUM README
71 国内新闻 0 0,71
73 北京新闻 71 0,71,73
76 国际新闻 0 0,76
77 美国新闻 76 0,76,77
79 南京新闻 71 0,71,79
80 娱乐新闻 73 0,71,73,80
81 体育新闻 73 0,71,73,81
展开
 我来答
zengtianrong
推荐于2016-08-02 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:153
采纳率:75%
帮助的人:69.2万
展开全部
谢谢楼主给出的问题,我闲着没事自己重写了一下楼住的例子,代码如下。
表结构我是参照楼主的表来设计的:
NUMID(我加了个NUMID用来记录流水号,其他一样)
ID
CLASSNAME
TOPID ROOTID
NUM
README

实现代码如下(为了方便,我用的ACCESS数据库,所有操作都在一个页面实现)
<%
db_path= server.MapPath("Tree.mdb")
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&db_path
'如果你的服务器采用较老版本Access驱动,请用下面连接方法
'connstr="driver={microsoft access driver (*.mdb)};uid=admin;pwd=123456;dbq="&db_path
conn.open connstr
%>

<script>
function showTr(vv)
{
var tr=document.getElementById(vv);
if(tr.style.display=="none")
{
tr.style.display=''
}
else
{
tr.style.display='none'
}
}
</script>
<%
action=request("action")
select case action
case "ADD"
id=request("id")
classname=request("classname")
set rs=conn.execute("select max(id) from class")
if not rs.eof then
maxid=rs(0)+1
end if
rs.close
set rs=nothing

conn.execute("insert into Class(ID,CLASSNAME,TOPID,ROOTID,README) values("&maxid&",'"&classname&"',"&id&","&maxid&",0)")
case "UPDATE"
id=request("id")
classname=request("classname")
conn.execute("update class set classname='"&classname&"' where id="&id)
case "DELETE"
conn.execute("delete from class where numId="&request("numId"))
end select
%>

<%
Function ViewClass(topid,k)'树型列表显示分类名
Set Rss = Conn.Execute("select * from Class where topid="&topid&" order by num,id")
Do While Not Rss.EOF
if trim(request("caozuo"))="classUpdate" and trim(Rss("numid"))=trim(request("numid")) then%>
<form action="?action=UPDATE" method="post">
<tr>
<td>

<input type="hidden" value="<%=rss("id")%>" name="id"/>
|-<%=tmp(k)%><input size="10" type='text' name="className" value="<%=rss("className")%>"/>
<input type="submit" value="保存" /> <input type="button" value="取消" onclick="window.location.href='output_tree.asp'"/>
</td>
</tr>
</form>
<%
else
Response.Write "<tr><td height='20'>|-" & tmp(k) &""& Rss("ClassName") &" <a href='#' onclick=""showTr('tr"&rss("id")&"');"">增加</a> <a href='output_tree.asp?caozuo=classUpdate&numid="&Rss("numid")&"'>修改</a> <a onclick=""return confirm('你确定删除吗?');"" href='output_tree.asp?action=DELETE&numId="&rss("numId")&"' >删除</a></td></tr>"
%>
<form action="?action=ADD" method="post">
<tr id='tr<%=rss("id")%>' style='display:none;'>
<td>
<input type="hidden" value="<%=rss("id")%>" name="id"/>
|-<%=tmp(k+1)%><input size="10" type='text' name="className" />
<input type="submit" value="保存" /> <input type="button" value="取消" onclick="window.location.href='output_tree.asp'"/>
</td>
</tr>
</form>
<%
end if
Response.Write ViewClass(Rss("id"),k+1)

Rss.MoveNext
Loop
Rss.close
set Rss = nothing
End Function

Function tmp(n)'显示缩进符号
For i = 0 To n
tmp = tmp & "-"
Next
End Function

Response.Write("<table border='0' cellspacing='0' cellpadding='0' width='300'>")
Set Rs = Conn.Execute("select * from Class where topid=0 order by num,Id")
Do While Not Rs.EOF
if trim(request("caozuo"))="classUpdate" and trim(Rs("numid"))=trim(request("numid")) then%>
<form action="?action=UPDATE" method="post">
<tr>
<td>
<input type="hidden" value="<%=rs("id")%>" name="id"/>
|-<input type="text" name="className" size="10" value="<%=rs("className")%>"/>
<input type="submit" value="保存" /> <input type="button" value="取消" onclick="window.location.href='output_tree.asp'"/>
</td>
</tr>
</form>
<%
else
Response.Write "<tr><td height='25'>|-<font color='red'>" & Rs("ClassName") & "</font><a href='#' onclick=""showTr('tr"&Rs("id")&"');"">增加</a> <a href='output_tree.asp?caozuo=classUpdate&numid="&Rs("numid")&"'>修改</a></td></tr>"
%>
<form action="?action=ADD" method="post">
<tr id='tr<%=Rs("id")%>' style='display:none;'>
<td>
<input type="hidden" value="<%=Rs("id")%>" name="id"/>
|-<%=tmp(0)%><input size="10" type='text' name="className" />
<input type="submit" value="保存" /> <input type="button" value="取消" onclick="window.location.href='output_tree.asp'"/>
</td>
</tr>
</form>
<%
end if
Call ViewClass(Rs("ID"),0)
Rs.MoveNext
loop
Rs.Close
set Rs=nothing
Response.Write("</table>")
%> </td>
</tr>
</table>

具体源码:http://download.csdn.net/source/965103
yuchangtc
2009-01-11 · TA获得超过263个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:140万
展开全部
库记录有问题...你看看.南京新闻库记录里.是不是跟国内新闻的子类数值相同..
===========
2次答复:
库记录的确没有问题.我看了一遍代码..感觉.问题应该出在排序上.指针指向的记录有偏差.我见意试将第一段代码中的order by num,id改为order by id
试一下.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式