1

これを理解するのは難しいと思います。結果を 50 件のみに制限するにはどうすればよいですか。ディレクトリに 1000 個のファイルがある場合、50 個のファイルのみがループされるように制限するにはどうすればよいでしょうか。

<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 の属性検証エラー。

4

2 に答える 2

6

完全なエラー メッセージを確認すると、回答が含まれています (強調は私のものです)。

属性の組み合わせが無効です: from、index、query、to。可能な組み合わせは次のとおりです。

  • 必須属性: 'query' . オプションの属性: 'endrow,startrow' .
  • ...
  • 必須属性: 'from,index,to' . オプションの属性: 'step' .

コードは、クエリ ループと from/to ループの 2 つの異なるタイプのループを混在させようとしています。これは有効な組み合わせではありません。queryループまたはループのいずれかを使用できますfrom/toが、両方を使用することはできません。

そうは言っても、目標は出力を表示することなので、cfloop. 「startRow」および「maxRows」属性を指定してcfoutputを使用するだけです。

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

他の回答で述べたように、最近のバージョンの CF もfor ...inループをサポートしています。

<cfscript>
   for (row in listRoot) {
      writeOutput("<br>Debug: name value = "& row.name );
   }
</cfscript>
于 2016-06-13T03:52:18.230 に答える
2

以下を使用して、クエリ内の特定の行にアクセスできます。

query[columnName][rowIndex]

from to loopの代わりにa を実行するには、次のようにしますeach loop

<cfoutput>
    <cfloop from="1" to="50" index="i">
        #listRoot["name"][i]#<br>
    </cfloop>
</cfoutput>
于 2016-06-13T03:37:08.123 に答える