我需要将查询完全循环12次以完成表单中的行,但查询很少会返回12行.如果结果是<12,则cfquery endRow属性不会强制循环继续运行.如果确实如此,那将是理想的使用像cfloop query ="myQuery"endRow ="12"...我选择的2个选项现在要跳过循环并写出所有12行,但这会产生大量重复的代码(有20列),或者对每行进行查询查询,这似乎是浪费很多的处理.谢谢你的任何想法.
你可以简单地使用
maxrows="12"
Run Code Online (Sandbox Code Playgroud)
不过,我认为您必须这样做的逻辑可能有问题。也许如果您发布一些我们的代码,我可以看一下并提出更好的方法。
maxRows 目前可以解决问题
更新
忘了提及,maxrows 必须与“cfoutput query”一起使用,因为 cfloop 查询不支持它。
在这种情况下,您将执行以下操作:
<cfoutput query="myQuery" maxRows="12">
Run Code Online (Sandbox Code Playgroud)
更新的更新
在准确了解您想要的内容后,我编写了以下代码,我认为这几乎是您所需要的:
<cfscript>
qryTest = QueryNew("name,email");
newRows = QueryAddRow(qryTest,5);
tmp = querySetCell(qryTest, 'name', 'John', 1);
tmp = querySetCell(qryTest, 'email', 'John@email.com', 1);
tmp = querySetCell(qryTest, 'name', 'Paul', 2);
tmp = querySetCell(qryTest, 'email', 'Paul@bob.com', 2);
tmp = querySetCell(qryTest, 'name', 'George', 3);
tmp = querySetCell(qryTest, 'email', 'George@bob.com', 3);
tmp = querySetCell(qryTest, 'name', 'Ringo', 4);
tmp = querySetCell(qryTest, 'email', 'Ringo@bob.com', 4);
tmp = querySetCell(qryTest, 'name', 'Yoko', 5);
tmp = querySetCell(qryTest, 'email', 'Yoko@bob.com', 5);
</cfscript>
<cfdump var="#qryTest#">
<form name="test">
<cfoutput>
<cfloop from="1" to="12" index="ii">
<cfif ii GT qryTest.recordCount>
<cfset tmp = QueryAddRow( qryTest, ii)>
</cfif>
Name: <input type="text" name="name_#ii#" value="#qryTest.name[ii]#"><br />
Wmail: <input type="text" name="email_#ii#" value="#qryTest.email[ii]#"><br /><br />
</cfloop>
</cfoutput>
</form>
<cfdump var="#qryTest#">
Run Code Online (Sandbox Code Playgroud)
如果有必要,这将动态地向您的查询添加新行(即,如果您的记录集上没有 12 行)
它模仿记录集,以便您可以复制并粘贴代码并查看结果。
希望能帮助到你 ;-)