我有两个使用绑定和cfc的cfselect框。一个是国家。选择一个州,第二个cfselect(县)即时填充。
在使用bind属性执行此操作之前,我依赖于queryPostion =“below”属性(如下所示)基本上将空行放入选项框中。我现在想对状态和县选择框执行相同的操作,因为我想要“”值(或“ALL”值作为每个选项。但queryPostion不再有效。 我不确定是否可以解决问题。
//original... leaves a blank option:
<cfselect enabled="No" name="search_state" multiple="no" query="get_States" value="StateUSAbb" display="StateName" queryPosition="below">
<option></option>
</cfselect>
//now, w/bind, doesn't work:
<cfselect bind="cfc:states.getStates()" bindonload="true" name="search_state"
value="StateUSAbb" display="StateName">
</cfselect>
<cfselect bind="cfc:states.getCounties({search_state})" bindonload="true" name="search_county" value="FIPS_County" display="CountyName" >
</cfselect>
更新 两种查询的解决方案:
SELECT DISTINCT tblLoc.StateUSAbb, lkuState.StateName
FROM lkuState INNER JOIN tblLoc ON lkuState.FIPS_State = tblLoc.FIPS_State
WHERE (lkuState.StateName <> 'New Brunswick')
UNION
SELECT '' AS StateUSAbb, '' AS StateName
FROM lkuState
ORDER BY StateName
SELECT '' AS FIPS_COUNTY, '' as CountyName
FROM lkuCnty
UNION
SELECT FIPS_County, CountyName
FROM lkuCnty
WHERE StateAbb = '#ARGUMENTS.stateabb#'
ORDER BY CountyName
答案 0 :(得分:2)
我想到的最简单的方法是在cfc的查询中插入一个空白(或占位符)数据行。类似的东西:
select "0" as id, "Choose...." as value
union
select id, value from tableName
答案 1 :(得分:1)
这将在states.cfc getCounties()函数中处理。这需要返回空白记录。如果您需要更多帮助,请在此处发布。
答案 2 :(得分:0)
更新:没关系。当我回复时,看起来已经提出了同样的建议; - )
AFAIK,没有用于在绑定选择列表中创建空元素的内置选项。至少不是CF8。
由于绑定将替换列表内容,因此您需要将空选项添加到查询结果中。一种方法是通过UNION将空选项添加到查询结果中。
取决于列表值,
SELECT 0 AS SortOrder, '' AS StateUSAbb, '--- ALL ---' AS StateName
UNION ALL
SELECT 1, StateUSAbb, StateName
FROM YourTable
WHERE (some condition ...)
ORDER BY SortOrder ASC
......或者可能
SELECT '' AS StateUSAbb, '--- ALL ---' AS StateName
UNION ALL
SELECT StateUSAbb, StateName
FROM YourTable
WHERE (some condition ...)
ORDER BY StateUSAbb
<强>更新强> 作为一个兴趣点,使用UNION和UNION ALL之间的区别在于UNION删除了重复项。 UNION ALL没有。由于UNION查询稍贵,我只在需要时使用它。
答案 3 :(得分:0)
FYI绑定表达式可以绑定到返回CF9中实体数组的函数。
在这种情况下,ArrayPrepend()的工作方式与QoQ w / UNION ALL相同。