我认为这个问题还没有完全回答,所以我会试一试。您要做的是使用模数运算符将数据分成块,在本例中为面板。这可能看起来很简单,但它可能很棘手,因为 ColdFusion 的基本索引为 1。因此,使用可以在 Java 等其他语言中工作的逻辑,使用基本索引为零的逻辑并不能完全按预期工作。这是我相信您正在寻找的代码:
<!---Note that CMFL/ColdFusion programming is not my thing so the syntax may be a bit off, however the logic should work but I'm sure an actual ColdFusion programmer can write more optimal code--->
<!---we start by setting a locally scoped variable to use as a counter in base 0 --->
<cfset var iCount = 0>
<!--- loop over all the items in the query --->
<cfloop query="getItinerary">
<!--- if the current value of iCount is divisible by 2 then proceed--->
<cfif iCount MOD 2 EQ 0>
<!---first time around 0 mod 2 = 0--->
<cfif iCount EQ 0>
<!--- insert the opening panel tag--->
[insert panel opening tag(s)]
<cfelseif iCount < getItinerary.recordCount>
<!---its not the first panel and it is not the last record --->
[insert closing tag(s) of previous panel]
[insert opening tag(s) of next panel]
</cfelse>
</cfif>
</cfif>
<cfoutput>
<!--- insert the date you would like listed within the panel --->
#dateFormat(getItinerary.start_date,"m/d/yy")#
</cfoutput>
<cfset iCount = iCount + 1>
<!---check if that was the last record, if so, close last the panel--->
<cfif iCount EQ getItinerary.recordCount>
[insert panel closing tag(s)]
</cfif>
</cfloop>
请注意,上面的代码假定至少有一条记录。如果没有记录是可能的,请相应地添加代码。同样使用带有基数 1 索引的 mod 2 会在第一个面板上为您提供错误的日期数。此外,mod 3 将在第一个面板上为您提供 2 个日期,然后在所有其他面板上为您提供 3 个日期(尽管在这种情况下,如果限制为 4,则 base 1 mod 3 可能会起作用,但如果更改限制,它将中断)。