我的查询包含一系列日期和其他详细信息。目前,如果查询返回4个日期,例如(2/27/2014
,2/28/2014
,3/1/2014
,3/2/2014
),我的代码将循环播放所有日期,并将相应的项目置于其正确的位置在面板上的一天。因此,它生成4个面板,每个面板包含一个日期。
如何调整代码,使其输出2个面板(每个2个日期),而不是4个面板,每个面板包含一个日期?感谢。
old_date = "";
<cfloop query="getItinerary">
<cfset cur_date = dateFormat(start_date,"m/d/yy")>
<cfif old_date NEQ cur_date>
<cfif old_date NEQ "">
<cfoutput>
CODE TO END PANEL AND START A NEW ONE
</cfoutput>
</cfif>
<cfoutput>
ITINERARY ITEM DATE
</cfoutput>
</cfif>
<cfoutput>
ITINERARY ITEM INFO DETAILS
</cfoutput>
</cfloop>
<cfoutput>
CODE TO END PANEL
</cfoutput>
答案 0 :(得分:2)
你有没有试过这样的东西来查询?它将一次显示2个记录结果集。
<cfif getItinerary.CurrentRow MOD 3>
...
答案 1 :(得分:0)
我认为这个问题没有得到完全回答,所以我会试一试。 您要做的是使用模数运算符将数据分成块,在本例中为面板。这可能看起来很简单,但它可能很棘手,因为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,基础1 mod 3可能有效,但如果限制被更改则会破坏)。 / p>