ColdFusion& Ajax:如何在Binded Select Box中获取空行?

时间:2010-10-13 17:26:30

标签: ajax select binding coldfusion cfc

我有两个使用绑定和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

4 个答案:

答案 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相同。