如何输出成ul li这种格式?

manoen 2009-08-17 03:21:00
我想从这个数据库读取数据然后输出成ul li 这种格式,做为菜单的数据。尝试多次,但一直未能解决。请教网上的朋友帮我分析一下,给一个思路。非常感谢!


<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>ClassID</title>
<style>
<!--
BODY{font:x-small 'Verdana';margin-right:1.5em}
.e{margin-left:1em;text-indent:-1em;margin-right:1em}
.c{cursor:hand}
-->
</style>
</head>
<body>
<p>表结构</p>
<table border="1" width="100%" id="table1" style="border:0px #0000FF solid;">
<tr>
<td width="143" bgcolor="#999999"><font color="#FFFFFF"><b>字段名称</b></font></td>
<td width="157" bgcolor="#999999"><font color="#FFFFFF"><b>数据类型</b></font></td>
<td bgcolor="#999999"><font color="#FFFFFF"><b>说明</b></font></td>
</tr>
<tr>
<td width="143">ClassID</td>
<td width="157">数字</td>
<td>栏目ID</td>
</tr>
<tr>
<td width="143">ClassName</td>
<td width="157">文本</td>
<td>栏目名称</td>
</tr>
<tr>
<td width="143">ParentID</td>
<td width="157">数字</td>
<td>父栏目ID</td>
</tr>
<tr>
<td width="143">ParentPath</td>
<td width="157">文本</td>
<td>栏目路径</td>
</tr>
<tr>
<td width="143">Depth</td>
<td width="157">数字</td>
<td>栏目层数</td>
</tr>
<tr>
<td width="143">RootID</td>
<td width="157">数字</td>
<td>根栏目ID</td>
</tr>
<tr>
<td width="143">Child</td>
<td width="157">数字</td>
<td>子栏目数</td>
</tr>
<tr>
<td width="143">PrevID</td>
<td width="157">数字</td>
<td>同级的上一个栏目ID</td>
</tr>
<tr>
<td width="143">NextID</td>
<td width="157">数字</td>
<td>同级的下一个栏目ID</td>
</tr>
</table>
<br>
请问如何输出如下这样的形式?
<p><textarea rows="13" name="S1" cols="66"><ul>
<li>上海</li>
<li>广东<ul>
<li>深圳<ul>
<li>宝安区
<ul>
<li>龙华</li>
<li>沙井</li>
<li>平湖</li>
</ul>
</li>
<li>福田区</li>
<li>罗湖区</li>
</ul>
</li>
<li>广州</li>
</ul>
</li>
</ul>
</textarea></p>
</body>
</html>


我用ASP写了一个,但还是有点问题,发现少了两个"</li>",不知道问题出在哪里,分不够的话,我还可以加分。
为何不能发附件呢?

<%
Call getMenuData("CL_sysClass3")

'**************************************************
'函数名:getMenuData(dbTableName)
'作 用:生成菜单数据
'参 数:getMenuData(数据表名)
'返回值:
'**************************************************
Function getMenuData(dbTableName)
Dim Rs,SQL,i,n
Dim inta,ndep,pdep,intb,str1
SQL = "SELECT ClassID,ClassName,ParentID,Depth,Child FROM "&dbTableName&" ORDER BY RootID,OrderID "
Set Rs = Conn.Execute(SQL)
If Rs.Bof And Rs.Eof Then
Exit Function
Else
n = 0
pdep = 0
Response.Write("<ul>")
While Not(Rs.Eof)
ndep = Rs("Depth")
Select Case (ndep-pdep)
Case 0
If n = 0 Then
Response.Write("<li>") '兄弟
Else
If Rs("ParentID") = 0 Then
Response.Write("</li><li></li><li>") '兄弟
Else
Response.Write("</li><li>") '兄弟
End If
End If
Case 1
Response.Write("<ul><li>") '子节点
Case Else '父亲
str1 = "</li>"
For i = 1 To (pdep-ndep)
str1 = str1 + "</ul>"
Next
If Rs("ParentID") = 0 Then
str1 = str1 + "</li><li></li><li>"
Else
str1 = str1 + "</li><li></li><li>"
End If
Response.Write(str1)
End Select
Response.Write(""&Rs("ClassName")&"")
pdep = ndep
n = n + 1
Rs.Movenext()
Wend
For i = 1 To pdep
Response.Write("</li></ul>")
Next
Response.Write("</ul>")
End If
Rs.Close:Set Rs = Nothing
End Function
%>



输出后:

<ul>
<li>常规管理
<ul>
<li>宇通
<ul>
<li>权限</li>
</ul>
</li>
<li></li>
<li>系统相关2</li>
<li>权限管理</li>
</ul>
</li>
<li></li>
<li>网站管理
<ul>
<li>中国
<ul>
<li>广东
<ul>
<li>广州</li>
<li>深圳
<ul>
<li>福田区</li>
<li>南山区</li>
</ul>
</li>
<li></li>
<li>中山</li>
</ul>
</li>
<li></li>
<li>广西</li>
</ul>
</li>
<li></li>
<li>日本</li>
<li>印度</li>
</ul>
</li>
<li></li>
<li>版面管理</li>
<li></li>
<li>用户相关</li>
<li></li>
<li>风格界面
<ul>
<li>联想</li>
<li>惠普</li>
<li>sfer</li>
<li>adwe</li>
<li>sfera</li>
</ul>
</li>
<li></li>
<li>贴子管理</li>
<li></li>
<li>数据处理
<ul>
<li>ddwwad</li>
<li>nghbbn</li>
</ul>
</li>
<li></li>
<li>文件管理
<ul>
<li>上传头像管理</li>
<li>上传文件管理</li>
</ul>
</li>
<li></li>
<li>插件管理
<ul>
<li>菜单管理</li>
<li>个性圈子管理</li>
</ul>
</li>
<li></li>
<li>系统相关
<ul>
<li>系统信息检测</li>
<li>系统日志
<ul>
<li>正确</li>
<li>错误</li>
<li>其它
<ul>
<li>警告</li>
</ul>
</ul>
</li>
<li></li>
<li>帮助管理</li>
<li>更新缓存</li>
</ul>
</ul>


...全文
234 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouzangood 2009-08-25
  • 打赏
  • 举报
回复
友情帮顶
manoen 2009-08-17
  • 打赏
  • 举报
回复
谢谢大家的回复,用什么语言都可以的。用递归有些不太满意。。。。
imshi 2009-08-17
  • 打赏
  • 举报
回复
asp啊,忘得差不多了...
用asp.net做这个真是太容易了
slund 2009-08-17
  • 打赏
  • 举报
回复
试试js.
Jinglecat 2009-08-17
  • 打赏
  • 举报
回复
转 Web/ASP 版本,已经忘了 ASP 语法了
zhengqian529 2009-08-17
  • 打赏
  • 举报
回复
是要做一个菜单结构么?
再网上搜索下dtree看看,是需要那样子的么?
银狐被占用 2009-08-17
  • 打赏
  • 举报
回复
递归
huyou1983218 2009-08-17
  • 打赏
  • 举报
回复
Repeater
zhulong1111 2009-08-17
  • 打赏
  • 举报
回复
vb啊 顶下
hui_1019 2009-08-17
  • 打赏
  • 举报
回复
<asp:Repeater ID="repeater1" runat="server">
<ItemTemplate>
<p><textarea rows="13" name="S1" cols="66"><ul>
<li>
<%# Eval("City") %>
<ul>
<li><%# Eval("Area") %>
<ul>
<li><%# Eval("address") %></li>
</ul>
</li>
</ul>
</li>

</ul>
</textarea></p>

</ItemTemplate>
</asp:Repeater>
阿非 2009-08-17
  • 打赏
  • 举报
回复
... 这是asp.net 版块 ~

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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