ColdFusion cfloop пропустить строку или изменить цикл endRow

Я пытаюсь отобразить 2 изображения и пропустить одно, если оно соответствует следующим критериям (<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 ответа

Я бы использовал счетчик для подсчета, когда вы показываете изображение. Как только вы получите 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>

Это отформатированный комментарий. Ваш код имеет это:

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

Вы должны проверить это, чтобы быть уверенным, но я подозреваю, что атрибут endRow вашего тега cfloop будет по-прежнему равен 3, даже если вы измените значение переменной endrowvalue на 1.

Возможно, это не является причиной вашей текущей проблемы, но, если мои подозреваемые верны, у вас возникнет проблема в другом месте, или вы выполняете бессмысленную команду.

Другие вопросы по тегам