首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何循环ASP中的每个记录集

问如何循环ASP中的每个记录集
EN

Stack Overflow用户
提问于 2013-07-01 03:54:44
回答 1查看 9.9K关注 0票数 1

我需要循环的帮助,我试图创建一个带有子菜单的菜单,在我的DataBase中,我有一个名为tblMenu的表,它有五个字段:tblMenu link、link_name、link_title、sub_menu)

link_position字段用于排序菜单项的位置,

链接字段存储菜单项的链接,

link_name保存菜单项的名称,

link_title持有菜单项的链接标题,

sub_menu存储菜单的子项(下拉)。

这里是tblMenu的预览

​

​

这里是循环代码

代码语言:javascript
复制
<ul>
<%
msql = "SELECT * FROM tblMenu ORDER BY [link_position] ASC"
Set RS = Server.CreateObject("ADODB.Recordset")
Set RSsub = Server.CreateObject("ADODB.Recordset")
RS.Open msql, Conn, 1,3
SET RSsub = Conn.execute ("SELECT * FROM tblMenu ORDER BY [link_position] ASC")

If Not RS.EOF Then
Do
Response.Write("<li><a href=""" & RS("link") & """ title =""" & RS("link_title") & """>" & RS("link_name") & "</a>" & vbcrlf)

            If Not RSsub.EOF Then
                Response.Write("<ul class=""sub-menu"">" & vbcrlf)
                Do While Not RSsub.EOF
                    Response.Write(RSsub("sub_menu") & vbcrlf)
                    RSsub.MoveNext()
                Loop
                Response.Write "</ul>" & vbcrlf
            End If
'                RSsub.Close

                Response.Write("</li>" & vbcrlf)
                RS.MoveNext()

        Loop Until RS.EOF
    End If          
%>
</ul>

输出

代码语言:javascript
复制
<ul>
<li><a href="/asp/" title ="Main Page">Home</a>
<ul class="sub-menu">

<li><a href="#">Inquiry</a></li>
<li><a href="#">Inquiry2</a></li>
<li><a href="#">ELS</a></li>
<li><a href="#">AP</a></li>
</ul>
</li>

<li><a href="/asp/page.asp?pID=1" title ="About us">About</a></li>
<li><a href="/asp/page.asp?pID=2" title ="E-Learning System">E-Learning</a></li>
<li><a href="/asp/page.asp?pID=5" title ="Academic Policies">Academic Policies</a></li>
<li><a href="/asp/page.asp?pID=6" title ="Facilities">Facilities</a></li>
<li><a href="/asp/events.asp" title ="Events Gallery">Events</a></li>

</ul>

问题

sub_menus的循环在主循环的第一个记录集中抛出所有记录,输出im期望的结果应该如下所示

代码语言:javascript
复制
<ul>
<li><a href="/asp/" title ="Main Page">Home</a></li>

<li><a href="/asp/page.asp?pID=1" title ="About us">About</a>
<ul class="sub-menu">
<li><a href="#">Inquiry</a></li>
<li><a href="#">Inquiry2</a></li>
</ul>
</li>

<li><a href="/asp/page.asp?pID=2" title ="E-Learning System">E-Learning</a>
<ul class="sub-menu">
<li><a href="#">ELS</a></li>
</ul>
</li>

<li><a href="/asp/page.asp?pID=5" title ="Academic Policies">Academic Policies</a>
<ul class="sub-menu">
<li><a href="#">AP</a></li>
</ul>
</li>

<li><a href="/asp/page.asp?pID=6" title ="Facilities">Facilities</a></li>
<li><a href="/asp/events.asp" title ="Events Gallery">Events</a></li>

</ul>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-01 06:22:46

我不知道为什么要运行相同的查询两次。您似乎从第一个SQL中获得了您想要的所有信息。如果我理解你的问题,纠正这段代码既简单又快。

代码语言:javascript
复制
<%
msql = "SELECT link_position, link, link_name, link_title, IIF(IsNull(sub_menu),'',sub_menu) as sub_menu FROM tblMenu ORDER BY [link_position] ASC"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open msql, Conn, 1,3

If Not RS.EOF Then
    response.write "<ul>"
    Do
        Response.Write("<li><a href='" & RS("link") & "' title ='" & RS("link_title") & "'>" & RS("link_name") & "</a>" & vbcrlf)

        If Not trim(RS("sub_menu")) = "" Then
            Response.Write("<ul class='sub-menu'>" & vbcrlf)
            Response.Write(RS("sub_menu") & vbcrlf)
            Response.Write "</ul>" & vbcrlf
        End If
        Response.Write("</li>" & vbcrlf)
        RS.MoveNext()
    Loop Until RS.EOF
    response.write "</ul>"
End If          
%>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17397216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档