首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何突破Cfoutput

如何突破Cfoutput
EN

Stack Overflow用户
提问于 2011-10-18 08:07:44
回答 2查看 4.3K关注 0票数 8

我正在遍历查询的结果,并且需要限制显示的行数。我需要使用cfoutput,因为我使用的是group属性,而不能使用maxrows,因为不是所有的行都会显示。

我试图在<cfoutput>中使用<cfbreak>,但是抛出了一个错误。

我怎样才能跳出<cfoutput>循环?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-18 19:17:45

如果group by只是为了从结果中删除重复项,我建议您使用查询来减少重复项,然后可以使用cfloop (选择distinct并减少返回的列列表)。

如果你使用group by来“分组”你的结果,你可以在你的循环中运行一个计数器,在第一个循环中运行一个cfif语句来忽略后面的结果。

如果需要cfbreak,您可以通过匹配前一行中的值来伪造cfloop中的group by选项

代码语言:javascript
复制
<cfloop query="queryname">
  <cfif queryname.column[currentrow-1] neq queryname.column[currentrow]>
    #queryname.column#
  </cfif>
</cfloop>

随机注释:您可以在分组的cfoutput的任何/所有级别上设置最大行数

代码语言:javascript
复制
<cfset tmp = querynew('id,dd')>
<cfloop from="1" to="20" index="i">
  <cfset queryaddrow(tmp,1)>
  <cfset querysetcell(tmp,'id',rand(),i)>
  <cfset querysetcell(tmp,'dd',(i mod 4),i)>
</cfloop>
<cfquery dbtype="query" name="tmp">select * from tmp order by dd</cfquery>

<cfoutput query="tmp" group="dd" maxrows="2">#dd#<br
  <ul>
    <cfoutput maxrows="2" group="id"><li>#id#</li></cfoutput>
  </ul>
</cfoutput>
票数 8
EN

Stack Overflow用户

发布于 2014-02-28 14:46:35

您可以使用cfthrow标记来触发一个异常,该异常将允许您使用cfcatch跳出循环,然后您可以忽略该异常并继续处理。这会给你你想要的。

代码语言:javascript
复制
    <cftry>
    <cfset i = 0>
    <cfoutput query="qMyQuery" group="someGroup">
            <cfset i = i + 1>
            Parent
                    <cfoutput>
                            Child
                    </cfoutput>

                    <cfif i GTE 10>
                            <cfthrow type="break">
                    </cfif>
    </cfoutput>

    <cfcatch type="break">
            <!--- DO NOTHING - THIS IS A HACK FOR NOT BEING ABLE TO USE CFBREAK inside cfoutput. --->
    </cfcatch>
    </cftry>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7801045

复制
相关文章

相似问题

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