将CFC绑定到cfselect框

时间:2012-10-30 14:37:58

标签: coldfusion cfc

我正在创建一个表单,出于某种原因,当使用带有远程CFC的bindOnLoad时,我的默认值似乎没有出现。

这是cfselect:

<cfselect name="edcs"
          id="edcs"
          multiple="false"
          bind="cfc:Components.requestSearch.getEDCs()" 
          bindonload="true"
          value="edc_nm"
          display="edc_nm">
    <option name="">Select an EDC</option>
</cfselect>

这是功能:

<cffunction name="getEDCs" access="remote" returntype="query">
    <cfscript>
        var queryService = new Query();
        queryService.setDatasource("#APPLICATION.db2system#");
        queryService.setName("getEDCs");
        queryService.setUserName("#APPLICATION.db2logon#");
        queryService.setPassword("#APPLICATION.db2pass#");
        queryService.setSQL(
                "select distinct rtrim(edc_nm) as edc_nm 
                   from #APPLICATION.db2owner#.pms_account");

        var result = queryService.execute();
        var edcs = result.getResult();          

        return("#edcs#");       
</cfscript>
</cffunction>

因此,当页面加载时,我会看到显示的<option ...>值一瞬间,然后填充列表,Select an ECD消失。我需要选择一个空值,这是该选项的用途。我究竟做错了什么?感谢。

补充:根据CF10文档,我应该可以使用<option> html标记。 http://help.adobe.com/en_US/ColdFusion/10.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7afe.html

3 个答案:

答案 0 :(得分:2)

我使用CFSELECT和绑定CFC遇到了这个问题。我也无法添加带有绑定CFSELECT的<option></option>标记。最好的方法是创建查询并强制结果在顶部具有所需的输入。例如:

SELECT distinct 
    rtrim(edc_nm) as edc_nm_display,
    rtrim(edc_nm) as edc_nm_value
FROM #APPLICATION.db2owner#.pms_account
UNION
SELECT
'Select an EDC' as edc_nm_display,
'0' as edc_nm_value
FROM dual
ORDER BY 2

这将通过顶部的“选择EDC”返回您的查询。 另外,作为支票,我认为<option name="">Select an EDC</option>应为<option value="">Select an EDC</option>。我希望有所帮助。

答案 1 :(得分:1)

查询将需要返回该值。尝试将其添加为UNION语句。

答案 2 :(得分:1)

回归不是一个功能...

return("#edcs#");    

尝试将您的功能更改为...

var result = queryServices().execute().getResult();
return result;