2016-06-13 10 views
1

Мне трудно понять это. Как ограничить результаты только до 50. Скажем, если в каталоге у меня есть 1000 файлов, как я могу ограничить его, так что запишутся только 50 файлов.cfdirectory loop limit results

<cfdirectory action="list" directory="#ExpandPath('/downloaded/')#" name="listRoot" filter="*.xml" recurse="false" sort="datelastmodified asc"> 
<cfoutput> 
    <cfloop query="listRoot" from="1" to="50" index="i"> 
      .... 
    </cfloop> 
</cfoutput> 

Когда я запускаю приведенный выше код я получаю следующее сообщение об ошибке

ошибка проверки атрибутов для тега CFLOOP.

ответ

6

Если просмотреть полный сообщение об ошибке, в нем содержится ответ (выделение мое):

Имеет недопустимую комбинацию атрибутов: from, index, query, to. Возможные комбинации:

  • Требуемые атрибуты: 'запрос'. Дополнительные атрибуты: 'endrow, startrow'.
  • ...
  • Обязательные атрибуты: 'from, index, to'. Дополнительные атрибуты: 'step'.

код пытается смешать два различных типа петель: петля запросов и из/в цикле. Это не действительная комбинация. Вы можете использовать цикл queryИЛИ a from/to цикл, но не оба.

Сказав это, поскольку цель состоит в том, чтобы отображать вывод, на самом деле нет необходимости в cfloop. Просто используйте cfoutput с "StartRow" и "maxRows" атрибуты:

<cfoutput query="listRoot" startRow="1" maxRows="50"> 
     #name#<br> 
    </cfoutput> 

Как уже упоминалось в другой ответ, последние версии CF также поддерживают for ...in loops:

<cfscript> 
    for (row in listRoot) { 
     writeOutput("<br>Debug: name value = "& row.name); 
    } 
</cfscript> 
2

Вы можете получить доступ к конкретным строк в запросе с:

query[columnName][rowIndex]

Для того, чтобы сделать from to loop вместо each loop, пойти:

<cfoutput> 
    <cfloop from="1" to="50" index="i"> 
     #listRoot["name"][i]#<br> 
    </cfloop> 
</cfoutput> 

 Смежные вопросы

  • Нет связанных вопросов^_^