cfdirectory 循环限制结果
cfdirectory loop limit the results
我发现很难理解这一点。我怎样才能将结果限制为 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>
当我运行上面的代码时,我得到以下错误信息
Attribute validation error for tag CFLOOP.
您可以通过以下方式访问查询中的特定行:
query[columnName][rowIndex]
为了执行 from to loop
而不是 each loop
,执行:
<cfoutput>
<cfloop from="1" to="50" index="i">
#listRoot["name"][i]#<br>
</cfloop>
</cfoutput>
如果您查看完整的错误消息,它包含答案(强调我的):
It has an invalid attribute combination: from,index,query,to. Possible combinations are:
- Required attributes: 'query'. Optional attributes: 'endrow,startrow'.
- ...
- Required attributes: 'from,index,to'. Optional attributes: 'step'.
该代码试图混合两种不同类型的循环:查询循环和 from/to 循环。那不是有效的组合。您可以使用 query
循环 或 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>
我发现很难理解这一点。我怎样才能将结果限制为 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>
当我运行上面的代码时,我得到以下错误信息
Attribute validation error for tag CFLOOP.
您可以通过以下方式访问查询中的特定行:
query[columnName][rowIndex]
为了执行 from to loop
而不是 each loop
,执行:
<cfoutput>
<cfloop from="1" to="50" index="i">
#listRoot["name"][i]#<br>
</cfloop>
</cfoutput>
如果您查看完整的错误消息,它包含答案(强调我的):
It has an invalid attribute combination: from,index,query,to. Possible combinations are:
- Required attributes: 'query'. Optional attributes: 'endrow,startrow'.
- ...
- Required attributes: 'from,index,to'. Optional attributes: 'step'.
该代码试图混合两种不同类型的循环:查询循环和 from/to 循环。那不是有效的组合。您可以使用 query
循环 或 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>