绑定失败:在 CF11 中找不到项目错误
Bind failed: Item not found error in CF11
我最近开始使用 ColdFusion 11 进行开发,但我在使用 cfselect 的 "bind" 属性 时遇到了一些问题。我一直在网上研究并阅读可用的文档,但我仍然遇到同样的错误。
我正在尝试构建一个包含两个 select 框的数据输入表单,其中 select 框 2 中的值取决于 select 框 1 中的 selection .
在此先感谢您的帮助。这是代码:
dsp_DataEntry.cfm:
<html>
<head>
<title>Insert Data Form</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<h2>Insert Data Form</h2>
<cfset dataObj = CreateObject("component", "qry_DDContents")>
<table>
<cfform id = "entry" name="entry" action="" method="post">
<tr>
<td>Plant: </td>
<td>
<cfinput type="text" name="plantID" size="10" required="true" value=#session.FacilityID# >
</td>
</tr>
<tr>
<td>Process:</td>
<td><cfselect name="ItemId" bind="cfc:qry_DDContents.getData()" bindonload="true" multiple="false" /></td>
</tr>
<tr>
<td>Subprocess:</td>
<td><cfselect name="DepItemId" bind="cfc:qry_DDContents.getSub({ItemId})" multiple="false"/></td>
</tr>
<tr>
<td>Equipment Name:</td>
<td><input type="Text" name="equipmentname" size="4" maxlength="20" required="true"></td>
</tr>
<tr>
<td>Date out of Service:</td>
<td><input type="date" name="dateOutOfService" required="true"></td>
</tr>
<tr>
<td>Ecpected Return To Service:</td>
<td><input type="date" name="dateExpectedReturnToService" required="true"></td>
</tr>
<tr>
<td>Date Returned To Service:</td>
<td><input type="date" name="dateReturnedToService" required="true"></td>
</tr>
<tr>
<td>Reason:</td>
<td><input type="Text" name="reason" size="150" maxlength="255"
required="true"></td>
</tr>
<tr>
<td> </td>
<td><input type="Submit" value="Submit"> <input type="Reset"
value="Clear Form"></td>
</tr>
</cfform>
<!--- end html form --->
</table>
</body>
</html>
qry_DDContents.cfc
<cfcomponent output="false" >
<cfparam name="attributes.DepItemID" default="-1" >
<cffunction name="getData" access="remote" returntype="query" returnformat="JSON">
<cfset var data="">
<cfset var result=ArrayNew(2)>
<cfset var i=0>
<cfquery name="data" datasource="#session.dbsource#" >
SELECT ItemId, ItemDescription FROM attribute_lookup WHERE (AttrId = 4)
</cfquery>
<cfloop index="i" from="1" to="#data.RecordCount#">
<cfset result[i][1]=data.ItemId[i]>
<cfset result[i][2]=data.ItemDescription[i]>
</cfloop>
<cfreturn result>
</cffunction>
<cffunction name="getSub" access="remote" returntype="query" returnformat="JSON">
<cfargument name="ItemID" type="char" required="true" >
<cfset var data="">
<cfset var result=ArrayNew(2)>
<cfset var i = 0>
<cfquery name = "data" datasource="#session.dbsource#">
SELECT DepItemId, ItemId, ItemDescription FROM attribute_lookup_depend WHERE (AttrId = 5) and (DepItemId =
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.ItemID#">)
</cfquery>
<cfloop index="i" from="1" to="#data.recordCount#">
<cfset result[i][2]=data.ItemId[i]>
<cfset result[i][1]=data.DepItemId[i]>
</cfloop>
<cfreturn result>
</cffunction>
</cfcomponent>
我可以在本地复制这个。我将 CFFORM 移到了 table 标签之外,它起作用了。这是在 FireFox 和 Chrome.
中
我最近开始使用 ColdFusion 11 进行开发,但我在使用 cfselect 的 "bind" 属性 时遇到了一些问题。我一直在网上研究并阅读可用的文档,但我仍然遇到同样的错误。
我正在尝试构建一个包含两个 select 框的数据输入表单,其中 select 框 2 中的值取决于 select 框 1 中的 selection .
在此先感谢您的帮助。这是代码:
dsp_DataEntry.cfm:
<html>
<head>
<title>Insert Data Form</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<h2>Insert Data Form</h2>
<cfset dataObj = CreateObject("component", "qry_DDContents")>
<table>
<cfform id = "entry" name="entry" action="" method="post">
<tr>
<td>Plant: </td>
<td>
<cfinput type="text" name="plantID" size="10" required="true" value=#session.FacilityID# >
</td>
</tr>
<tr>
<td>Process:</td>
<td><cfselect name="ItemId" bind="cfc:qry_DDContents.getData()" bindonload="true" multiple="false" /></td>
</tr>
<tr>
<td>Subprocess:</td>
<td><cfselect name="DepItemId" bind="cfc:qry_DDContents.getSub({ItemId})" multiple="false"/></td>
</tr>
<tr>
<td>Equipment Name:</td>
<td><input type="Text" name="equipmentname" size="4" maxlength="20" required="true"></td>
</tr>
<tr>
<td>Date out of Service:</td>
<td><input type="date" name="dateOutOfService" required="true"></td>
</tr>
<tr>
<td>Ecpected Return To Service:</td>
<td><input type="date" name="dateExpectedReturnToService" required="true"></td>
</tr>
<tr>
<td>Date Returned To Service:</td>
<td><input type="date" name="dateReturnedToService" required="true"></td>
</tr>
<tr>
<td>Reason:</td>
<td><input type="Text" name="reason" size="150" maxlength="255"
required="true"></td>
</tr>
<tr>
<td> </td>
<td><input type="Submit" value="Submit"> <input type="Reset"
value="Clear Form"></td>
</tr>
</cfform>
<!--- end html form --->
</table>
</body>
</html>
qry_DDContents.cfc
<cfcomponent output="false" >
<cfparam name="attributes.DepItemID" default="-1" >
<cffunction name="getData" access="remote" returntype="query" returnformat="JSON">
<cfset var data="">
<cfset var result=ArrayNew(2)>
<cfset var i=0>
<cfquery name="data" datasource="#session.dbsource#" >
SELECT ItemId, ItemDescription FROM attribute_lookup WHERE (AttrId = 4)
</cfquery>
<cfloop index="i" from="1" to="#data.RecordCount#">
<cfset result[i][1]=data.ItemId[i]>
<cfset result[i][2]=data.ItemDescription[i]>
</cfloop>
<cfreturn result>
</cffunction>
<cffunction name="getSub" access="remote" returntype="query" returnformat="JSON">
<cfargument name="ItemID" type="char" required="true" >
<cfset var data="">
<cfset var result=ArrayNew(2)>
<cfset var i = 0>
<cfquery name = "data" datasource="#session.dbsource#">
SELECT DepItemId, ItemId, ItemDescription FROM attribute_lookup_depend WHERE (AttrId = 5) and (DepItemId =
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.ItemID#">)
</cfquery>
<cfloop index="i" from="1" to="#data.recordCount#">
<cfset result[i][2]=data.ItemId[i]>
<cfset result[i][1]=data.DepItemId[i]>
</cfloop>
<cfreturn result>
</cffunction>
</cfcomponent>
我可以在本地复制这个。我将 CFFORM 移到了 table 标签之外,它起作用了。这是在 FireFox 和 Chrome.
中