2016-12-27 9 views
1

Я работаю с довольно большим количеством элементов в cfloop. Я хотел бы сделать это и добавить разбивку на страницы. В любом случае, в моем cfloop ограничение массива на первые 10?Coldfusion limit cfloop to 10

У меня есть

<cfloop array="#qryItems#" index="index"> 

Я попытался превратить его в состояние петли без везения и несколько других вещей. Я не дотрагивался до холода и немного ржавый. Google не помогает хаху

Я попытался

<cfloop from="1" to="10" array="#qryItems#" index="index"> 

и также пытался MAX_ROWS

<cfloop maxrows="10" array="#qryItems#" index="index"> 

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

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

+0

вы можете использовать 'cfbreak' –

+0

@Lashane Это очень большой кусок кода в cfoutput так что я пытался избежать того, чтобы изменить его, но я попробую что-нибудь. – zazvorniki

+1

Вместо ограничения цикла на 10 итераций, почему бы не изменить то, что определяет массив, чтобы возвращать только 10 элементов? Если это определено запросом, вы получите гораздо лучшую производительность, выполнив разбиение на страницы в базе данных и только вернув записи запрошенной страницы. –

ответ

2
<cfloop from="1" to="10" index="index"> 
    <!--- Then do your business with array elements qryItems[index], that is, with qryItems[1], qryItems[2],..., qryItems[10] ---> 
</cfloop> 
+0

Я пробовал это. Я просто верну ошибку " Ошибка проверки атрибута для тега CFLOOP." – zazvorniki

+0

@zazvorniki У вас должно быть что-то еще не так, потому что это должно сработать. Если вы разместите код, который вы пробовали, мы, вероятно, можем указать на проблему. Просто [отредактируйте исходный вопрос] (http://stackoverflow.com/posts/41350595/edit) и добавьте туда код. –

+0

@ Miguel-F Я ничего не меняю в коде и код стабилен уже более года. Я написал выше код, который я пробовал. – zazvorniki

1

Нет никакой комбинации атрибутов для cfloop, чтобы выполнить то, что вы ожидаете. Как предложил BKBK, вам понадобится цикл from/to для вывода выбранной группы записей. Если я правильно понимаю ваши требования, я бы обновил ваш cfloop с помощью новой индексной переменной, а затем установил старую переменную, ссылаясь на элемент массива.

Следующие два вывода отображают одни и те же данные, а второй отображает только записи в диапазоне разбивки на страницы.

<cfset qryItems = [1,2,3,4,5,6,7,8,9,10,'a','b','c','d'] /> 
<cfoutput> 
    <!--- Current loop: Outputs all records ---> 
    <cfloop array="#qryItems#" index="index"> 
     #index# 
    </cfloop> 
    <cfset paginationStart = 1 /> 
    <cfset paginationEnd = 10 /> 
    <!--- Only the range of of records requested ---> 
    <cfloop from="#paginationStart#" to="#paginationEnd#" index="indexNumber"> 
     <cfset index = qryItems[indexNumber] /> 
     <!--- code remain the same ---> 
     #index# 
    </cfloop> 
</cfoutput> 
+0

Да, хотя я думаю, что они действительно хотят, чтобы 'from/to' был динамическим, поэтому он может использоваться с кодом разбивки на страницы отображать элементы от X до Y, а не отображать первые 10 элементов. [Пример] (http://trycf.com/gist/1833166b313d7602c2fbf991a02fd431/acf2016?theme=monokai). – Leigh

+1

Спасибо @Leigh Я пошел и обновил свой пример, чтобы включить переменные для разбивки на страницы, как в вашем примере. – Twillen