ColdFusion cfloop跳过行或更改循环endRow

时间:2015-09-25 12:39:05

标签: coldfusion cfloop cfdirectory

我正在尝试显示2张图片,如果符合以下条件,则跳过1张图片(<cfif myDir.name eq property_mainimage>工作正常,然后继续下一张图片并显示下一张图片,直到我总共有2张图片但是当标准图像在第5行中说出时,循环显示3个图像,当标准图像是第1行时,它显示2个图像。

cfloop中似乎没有跳过行?

我已经尝试了<cfif counter gt 3 > <cfabort>但它显示了标准图像的3幅图像大于3行。以下是我正在使用的...

<cfdirectory directory="C:\Domains\domain.com\wwwroot\uploads\images\#property_ID#\" filter="*.jpg" name="myDir" type="file" sort="datelastmodified">
<ul>
  <cfset counter = 0>
  <cfset endrowvalue = 3 >
  <cfloop query="myDir" endRow="#endrowvalue#">
    <cfset counter = counter +1 >
    <li>
    <cfif right(myDir.name,4) is ".jpg">
      <cfif fileexists("C:\Domains\ domain.com\wwwroot\uploads\ images\#property_ID#\#left(mydir.name,len(myDir.name)-4)#.jpg")>
        <cfif myDir.name eq property_mainimage>
          DO NOT SHOW THIS IMAGE
        <cfelse>
          <cfset endrowvalue = 1 >
          <cfset myDir.endRow = 1 >
          test #endrowvalue#
          test #counter# <img src="#request.root#uploads/images/#property_ID#/#myDir.name#" border="0" width="230px" style="margin-bottom:15px;"  />
        </cfif>
      </cfif>
    </cfif> 
    </li>
  </cfloop>
</ul>

任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:2)

我会在你显示图像时使用计数器进行计数。一旦你到达2个图像显示突然出现。

<cfdirectory directory="C:\Domains\domain.com\wwwroot\uploads\images\#property_ID#\" filter="*.jpg" name="myDir" type="file" sort="datelastmodified">
<ul>
  <cfset counter = 1>
  <cfloop query="myDir">
    <li>
      <cfif right(myDir.name,4) is ".jpg">
        <cfif fileexists("C:\Domains\ domain.com\wwwroot\uploads\ images\#property_ID#\#left(mydir.name,len(myDir.name)-4)#.jpg")>
          <cfif myDir.name eq property_mainimage>
            DO NOT SHOW THIS IMAGE
          <cfelse>
            <!--- image displayed increment coutner --->
            <cfset counter++>
            <img src="#request.root#uploads/images/#property_ID#/#myDir.name#" border="0" width="230px" style="margin-bottom:15px;"  />
          </cfif>
        </cfif>
      </cfif> 
      <cfif counter EQ 2>
        <cfbreak>
      </cfif>
    </li> 
  </cfloop>
</ul>

答案 1 :(得分:0)

这是一种格式化的评论。你的代码有这个:

<cfset endrowvalue = 3 >
<cfloop query="myDir" endRow="#endrowvalue#">
    <cfif myDir.name eq property_mainimage>
      DO NOT SHOW THIS IMAGE
    <cfelse>
      <cfset endrowvalue = 1 >

您必须对其进行测试才能确定,但​​我怀疑cfloop标记的endRow属性将继续为3,即使您将endrowvalue变量的值更改为1。

这可能不是您当前问题的原因,但是,我的怀疑是正确的,您将在其他地方遇到问题或者您正在运行无意义的命令。