【问题标题】:Looping Columns in coldfusion along with values in correct order在coldfusion中循环列以及正确顺序的值
【发布时间】:2014-03-24 04:52:55
【问题描述】:

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

在两个 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>

【问题讨论】:

标签: html sql coldfusion


【解决方案1】:

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

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

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

为了显示您的列标题,您只需遍历这个数组。显示数据会稍微复杂一些。我会这样做:

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

【讨论】:

  • 这不是一个 ColdFusion 函数,它是底层 Java 类上的一个方法,它表示一个 ColdFusion 查询对象。它没有记录且不受支持。它会起作用,但是在使用这些函数时应该谨慎行事,如果有一个可以使用的本地 CFML 函数(比如在这种情况下,getMetadata() 返回需要的信息),那么应该始终使用 CFML代替函数。
  • 我正在测试转换为 Lucee。 ACF 和 Lucee 都使用语法 query_name.columnList 返回列名的 CSV 列表。调用 Java 函数 getColumnList() 在 Lucee 中不起作用。
【解决方案2】:

这个答案似乎太明显了,无法满足您的要求,但我想不出您还有什么意思。一个通过&lt;cfloop&gt;标签循环记录集:

<cfloop query="showDeletedData"><!--- loop rows--->
    <cfloop array="#employeemeta#" index="col"><!--- loop columns--->
        <cfoutput>#showDeletedData[col][currentRow]#</cfoutput><!--- output value for the row/column --->
    </cfloop>
</cfloop>

这就是你要问的吗?

【讨论】:

  • 将您的数据库模式与您的显示要求结合起来也很奇怪。除非这是一个基于网络的数据库维护客户端,我猜。
  • 没有问题,coldfusion 将按字母顺序显示列,而不是按数据库中列出的顺序。
  • getMetadata() 按在 SQL 语句中指定的顺序返回列。如果您使用的是SELECT *,那将按照它们在表创建语句中定义的顺序。如果您在 SELECT 语句中列出的列不同,则必须再次查询数据库才能从表本身获取排序。
  • coldfusion 将按字母顺序显示列 您是否真的尝试过上面的代码,或者您只是假设它的行为与使用 query.columnList 的行为相同?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-01
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
相关资源
最近更新 更多