0

我有两个使用绑定的 cfselect 框和一个 cfc。一是状态。选择一个州,然后即时填充第二个 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
4

4 回答 4

2

我想出的最简单的方法是在 cfc 的查询中插入一个空白(或占位符)数据行。就像是:

select "0" as id, "Choose...." as value
union
select id, value from tableName
于 2010-10-13T17:52:40.267 回答
1

这将在 states.cfc getCounties() 函数中处理。那需要返回空白记录。如果您需要更多帮助,请在此处发布。

于 2010-10-13T17:52:43.030 回答
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 查询稍微贵一些,我只在需要时使用它。


于 2010-10-13T17:55:16.667 回答
0

仅供参考,绑定表达式可以绑定到在 CF9 中返回实体数组的函数。

在这种情况下,ArrayPrepend() 的工作方式与带 UNION ALL 的 QoQ 相同。

于 2010-10-13T22:04:26.490 回答