我有一个查询和一个字段/列名称列表。我想做一个双循环 - 遍历查询中的每个记录,然后循环遍历字段/列名称列表并输出每个相应的字段。循环应该是这样的:
<table>
<cfoutput query="myQuery">
<tr>
<cfloop list="#cols#" index="col">
<td>?</td>
</cfloop>
</tr>
</cfoutput>
</table>
问题是在问号所在的位置...我已经尝试了#myquery[col]#
,但这不起作用。我需要在变量col
中获取由字符串名称指示的变量......显然,#col#
将只返回列名。我需要找出一些方法来对字符串进行双重评估...类似于##col##
,这当然也无法正常工作。我怎么能做到这一点?
答案 0 :(得分:7)
当引用列名作为结构时,您还需要告诉查询要获取哪一行。如果没有通过myQuery.ColumnList获取cols变量,还应确保检查列名是否存在。
使用以下代码动态引用循环中的每一列:
<table>
<cfoutput query="myQuery">
<tr>
<cfloop list="#cols#" index="col">
<td>#myQuery[col][CurrentRow]#</td>
</cfloop>
</tr>
</cfoutput>
</table>
答案 1 :(得分:-1)
您仍然可以将Sergii的方法与您自己的列表一起使用:
<cfloop list="#cols#" index="col">
<cfif StructKeyExists(myQuery, col)>
<td>#col# = #myQuery[col][myQuery.CurrentRow]#</td>
</cfif>
</cfloop>
答案 2 :(得分:-2)
得到了!! :)
#evaluate(evaluate("col"))#