Как вырваться из Cfoutput
Я перебираю результаты запроса и мне нужно ограничить количество отображаемых строк. Мне нужно использовать cfoutput
потому что я использую group
атрибут, и я не могу использовать maxrows
потому что не все строки будут отображаться.
Я пытался использовать <cfbreak>
внутри <cfoutput>
, но это выдает ошибку.
Как я могу вырваться из <cfoutput>
цикл?
2 ответа
Если ваша группа только для удаления дубликатов из ваших результатов, я бы предложил использовать ваш запрос для их сокращения, тогда вы можете сделать cfloop (выбрать отличный и уменьшить список возвращаемых столбцов).
Если вы используете свою группу для "группировки" своих результатов, вы можете запустить счетчик в вашем цикле и оператор cfif в первом цикле, чтобы пропустить последующие результаты.
Вы можете подделать группу опцией в вашем cfloop, сопоставив значение из предыдущей строки, если вам нужен cfbreak
<cfloop query="queryname">
<cfif queryname.column[currentrow-1] neq queryname.column[currentrow]>
#queryname.column#
</cfif>
</cfloop>
Случайное примечание: вы можете максроу на любом / всех уровнях вашего сгруппированного cfoutput
<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>