冷融合中的循环列以及正确顺序的值

use*_*142 0 html sql coldfusion

我更喜欢动态地执行此操作,而不是将查询中的列硬编码到表中。这是我从另一个来源调整的代码。我想要做的不仅是按顺序获取列,还要获取每列的行值。我似乎找不到使用此方法显示每列的实际行值的属性,仅显示列名称和类型。

在两个 cfloop 中,顶部的一个将表示列名称,而底部的一个将表示该列的行值。

cfset employeemeta=getMetaData(ShowDeletedData)>
 <Table border="1">
 <TR>
<h4>The Employees table has the following columns</h4>
<cfloop index="i" from="1" to="#arrayLen(employeemeta)#">
    <cfoutput>
       <TD> #employeemeta[i].name# </TD>
    </cfoutput>
</cfloop>
</TR>
 <TR>
<cfloop index="i" from="1" to="#arrayLen(employeemeta)#">
    <cfoutput>
       <TD> #employeemeta[i].name# </TD>
    </cfoutput>
</cfloop>
</TR>
</table>
Run Code Online (Sandbox Code Playgroud)

Dan*_*cuk 5

我从这些论坛上其他人的答案中了解到,ColdFusion 有一个名为 getColumnList() 的函数。它按列名称出现的顺序返回列名称的数组。我刚刚运行此代码来验证它。

<cfquery name="x" datasource="burns">
select 1 b, 2 a
from dual
</cfquery>
<cfdump var="#x.getcolumnlist()#" metainfo="no">
Run Code Online (Sandbox Code Playgroud)

它返回一个数组,先显示 b,然后显示 a。

为了显示列标题,您只需循环访问该数组即可。显示数据会稍微复杂一些。我会做这样的事情:

<cfoutput query="q1">
<cfloop array="#q1.getcolumnlist()#" index = "arrayElement">
#q1[arrayElement][currentrow]#
closing tags
Run Code Online (Sandbox Code Playgroud)

  • 这不是 ColdFusion 函数,而是表示 ColdFusion 查询对象的底层 Java 类上的方法。它是无证且不受支持的。它会起作用,但在使用这些函数时应该小心谨慎,如果有一个可以使用的原生 CFML 函数(就像在这种情况下,“getMetadata()”返回需要的信息),那么应该始终使用CFML 函数代替。 (2认同)