2016-12-27 7 views
1

Je travaille avec un large éventail d'éléments dans un cfloop. Je voudrais réduire cela et ajouter la pagination. Y at-il de toute façon dans mon cfloop de limiter le tableau aux 10 premiers?Limite de Coldfusion cfloop à 10

J'ai

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

J'ai essayé la transformer en une boucle condition sans chance et quelques autres choses. Je n'ai pas touché à la coldfusion depuis un moment et je suis un peu rouillée. Google n'aide haha ​​

J'ai essayé

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

et ont également essayé max_rows

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

chaque fois que je reçois le message d'erreur

« Attribut erreur de validation pour la balise CFLOOP. "

+0

vous pouvez utiliser 'cfbreak' –

+0

@Lashane Il est un très gros morceau de code dans le cfoutput donc je voulais éviter d'avoir à le modifier, mais je vais essayer quoi que ce soit. – zazvorniki

+1

Au lieu de limiter la boucle à 10 itérations, pourquoi ne pas éditer la chose qui définit le tableau pour ne renvoyer que 10 éléments? Si elle est définie par une requête, vous obtiendrez de meilleures performances en effectuant la pagination dans la base de données et en ne renvoyant que les enregistrements de la page demandée. –

Répondre

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

J'ai essayé ceci. Je viens de récupérer une erreur " Erreur de validation d'attribut pour l'étiquette CFLOOP." – zazvorniki

+0

@zazvorniki Vous devez avoir eu quelque chose d'autre faux, car cela devrait fonctionner. Si vous postez le code que vous avez essayé, nous pouvons probablement signaler le problème. Juste [éditez votre question originale] (http://stackoverflow.com/posts/41350595/edit) et ajoutez le code là. –

+0

@ Miguel-F Je ne change rien d'autre dans le code et le code est stable depuis plus d'un an maintenant. J'ai posté au-dessus du code que j'ai essayé. – zazvorniki

1

Il n'y a pas de combinaison d'attributs pour cfloop pour accomplir ce que vous attendiez. Comme BKBK l'a suggéré, vous devrez utiliser une boucle from/to pour sortir un groupe sélectionné d'enregistrements. Si je comprends bien vos besoins, je mettrais à jour votre cfloop avec une nouvelle variable d'index, puis définirais l'ancienne variable en faisant référence à l'élément de tableau.

Les deux cfloops ci-dessous produisent les mêmes données, la seconde affichant uniquement les enregistrements dans la plage de pagination.

<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

Oui, bien que je pense qu'ils veulent réellement que 'from/to' soit dynamique, donc il peut être utilisé avec un code de pagination pour afficher les éléments X à Y, au lieu de toujours afficher les 10 premiers éléments. [Exemple] (http://trycf.com/gist/1833166b313d7602c2fbf991a02fd431/acf2016?theme=monokai). – Leigh

+1

Merci @Leigh je suis allé et mis à jour mon exemple pour inclure des variables pour la pagination comme dans votre exemple. – Twillen