2

我是新版本的 ColdFusion 的新手,我在将简单的数据绑定到 cfselect 时遇到问题。我已经尽我所能彻底研究它,我什至回到教科书并基本上在测试文件中复制了代码示例,但我仍然得到同样的错误。

我正在尝试构建有 2 个 cfselects 并且第二个依赖于第一个的常见情况,但在这一点上,我什至无法让第一个工作。返回的错误是:

“选择框 Species_id 绑定失败,绑定值不是二维数组或有效的序列化查询”

提前感谢您的帮助。这是代码:

<cfcomponent>
    <cffunction name="getSpecies" access="remote" returnType="array">
    <cfset var rsData = "">
    <cfset var myReturn=ArrayNew(2)>
    <cfset var i=0>
      <cfstoredproc datasource="#application.dsn#" procedure="up_get_Species">
            <cfprocresult name="DataResults">
        </cfstoredproc>
    <cfloop query="DataResults">
        <cfset myReturn[rsData.currentRow][1]=rsData.Species_id>
        <cfset myReturn[rsData.currentRow][2]=rsData.Species>
    </cfloop>
    <cfreturn myReturn>
    </cffunction>
</cfcomponent>

<html>
<head>
    <title>CFSelect Example</title>
</head> 
<body>
<h1>Sandbox for getting cfselect bind working</h1>
<cfform name="form1">
Wood Type
<br>
<cfselect name="Species_id" bind="office.cfc:data.getspecies()"
    bindOnLoad = "true" />
</cfform>
</body>
</html>
4

1 回答 1

2

看起来您的绑定语法已关闭。绑定表达式应以type:绑定 (cfc、url、javascript) 开头。由于您要绑定到一个组件,因此您必须在它前面加上"cfc:",即

     bind="cfc:path.to.yourComponentName.yourFunctionName()"

也就是说,CF 的更高版本支持绑定到查询,这简化了绑定。只需将功能更改returnTypequery.

<cffunction name="getSpecies" access="remote" returnType="query">
     <!--- Be sure to Local scope all variables, including query names --->
     <cfstoredproc datasource="#application.dsn#" procedure="up_get_Species">
          <cfprocresult name="Local.DataResults">
     </cfstoredproc>

     <cfreturn Local.DataResults >
</cffunction>

然后在您的选择列表中指定display和属性。value

<cfselect name="service" 
          bind="cfc:office.cfc:data.getSpecies()"
          display="Species"
          value="Species_id" ...>
于 2013-04-11T19:09:54.140 回答