Coldfusion 在循环中构建选择列表
如何不在循环中使用查询查询来解决必须为每一行构建选择列表的问题 在此示例中,每个客户都有一个该客户独有的操作列表:Coldfusion 在循环中构建选择列表,coldfusion,cfquery,Coldfusion,Cfquery,如何不在循环中使用查询查询来解决必须为每一行构建选择列表的问题 在此示例中,每个客户都有一个该客户独有的操作列表: <cfquery name="qryAction" datasource="myDataSource"> SELECT ActionID,CustID,ActionName FROM AvailableActions </cfquery> <cfquery name="qryOrderHeader" datasource="myDataSource"&
<cfquery name="qryAction" datasource="myDataSource">
SELECT ActionID,CustID,ActionName FROM AvailableActions
</cfquery>
<cfquery name="qryOrderHeader" datasource="myDataSource">
SELECT CustID FROM OrderHeader
</cfquery>
<html>
<body>
<cfform preservedata="yes">
<cfloop query="qryOrderHeader">
<cfquery name="qry3" dbtype="query">
SELECT ActionID,ActionName FROM qryAction
WHERE CustID = #qryOrderHeader.CustID#
</cfquery>
<cfselect name="ActionID" query="qry3" display="ActionName" value="ActionID" />
</cfloop>
</cfform>
</body>
</html>
我认为最好的结果是在qryOrderHeader中包含ActionID和ActionName。手动构建选择列表非常简单,而不是通过使用带有group属性的cfoutput来使用cfselect:
<cfquery name="qryAction" datasource="myDataSource">
SELECT ActionID,CustID,ActionName
FROM AvailableActions
ORDER BY CustID
</cfquery>
<cfoutput query="qryAction" group="CustID">
<select name="actionid">
<cfoutput>
<option value="#val(ActionID)#">#htmlEditFormat(ActionName)#</option>
</cfoutput>
</select>
</cfoutput>
注意:为了使嵌套的cfoutputs正常工作,您需要将CustID指定为第一个或唯一的order by。未经测试,因此可能存在输入错误。手动构建选择列表非常简单,而不是通过使用带有group属性的cfoutput来使用cfselect:
<cfquery name="qryAction" datasource="myDataSource">
SELECT ActionID,CustID,ActionName
FROM AvailableActions
ORDER BY CustID
</cfquery>
<cfoutput query="qryAction" group="CustID">
<select name="actionid">
<cfoutput>
<option value="#val(ActionID)#">#htmlEditFormat(ActionName)#</option>
</cfoutput>
</select>
</cfoutput>
注意:为了使嵌套的cfoutputs正常工作,您需要将CustID指定为第一个或唯一的order by。未经测试,因此可能有打字错误。谢谢Ben。我的示例循环遍历每个OrderHeader。Qry3对于每一行都是不同的。Phillip,如果需要关闭orderheader,只需使用基本联接。原理是一样的,谢谢你,本。我的示例循环遍历每个OrderHeader。Qry3对于每一行都是不同的。Phillip,如果需要关闭orderheader,只需使用基本联接。原则是一样的。谢谢迈克尔。将AvailableActions表连接到OrderHeader表将为每个OrderHeader生成多行。不确定Michael的评论在哪里,但连接以获得多行是一种方法-然后根据Ben的回答进行分组,您将得到您想要的。谢谢Michael。将AvailableActions表连接到OrderHeader表将为每个OrderHeader生成多行。不确定Michael的注释在哪里,但连接以获得多行是一种方法-然后按照Ben的答案进行分组,这样就得到了您想要的结果。