我正在循环查询结果,我需要限制显示的行数。我需要使用cfoutput
,因为我正在使用group
属性,而我不能使用,maxrows
因为并非所有行都会显示。
我尝试在<cfbreak>
内部使用<cfoutput>
,但这会引发错误。
我怎样才能跳出<cfoutput>
循环?
我正在循环查询结果,我需要限制显示的行数。我需要使用cfoutput
,因为我正在使用group
属性,而我不能使用,maxrows
因为并非所有行都会显示。
我尝试在<cfbreak>
内部使用<cfoutput>
,但这会引发错误。
我怎样才能跳出<cfoutput>
循环?
如果您的 group by 只是为了从您的结果中删除重复项,我建议使用您的查询来减少它们,那么您可以 cfloop (选择不同的并减少您返回的列列表)。
如果您使用 group by 来“分组”您的结果您可以在循环中运行计数器并在第一个循环中运行 cfif 语句以省略以后的结果。
如果您需要 cfbreak,您可以通过匹配上一行的值来伪造您的 cfloop 中的 group by
<cfloop query="queryname">
<cfif queryname.column[currentrow-1] neq queryname.column[currentrow]>
#queryname.column#
</cfif>
</cfloop>
随机注释:您可以在分组 cfoutput 的任何/所有级别上进行 maxrows
<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>
您可以使用 cfthrow 标记触发一个异常,允许您使用 cfcatch 跳出循环,然后您可以忽略该异常并继续处理。那会给你你想要的。
<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>