2016-06-13 96 views
1

我很難理解這一點。我怎樣才能將結果限制爲50。比方說,如果在目錄中我有1000個文件,我怎麼能限制它,以便只有50個文件被循環。cfdirectory循環限制結果

<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,'。可選屬性:'步驟'

該代碼試圖混合兩種不同類型的循環:查詢循環和from/to循環。這不是一個有效的組合。您可以使用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>