Data binding 如何将button控件绑定到cfc以切换布尔数据库值
我希望能够绑定一系列的3个按钮来切换数据库消息条目上的3个布尔值。布尔数据库条目为已读|未读、已操作|挂起、引用|消息,消息条目具有唯一的密钥messageID。我希望按钮显示我假定为bindonload=true的记录起始值 我一瘸一拐地朝着你走去Data binding 如何将button控件绑定到cfc以切换布尔数据库值,data-binding,coldfusion,cfc,Data Binding,Coldfusion,Cfc,我希望能够绑定一系列的3个按钮来切换数据库消息条目上的3个布尔值。布尔数据库条目为已读|未读、已操作|挂起、引用|消息,消息条目具有唯一的密钥messageID。我希望按钮显示我假定为bindonload=true的记录起始值 我一瘸一拐地朝着你走去 <cfform> <cfinput type="hidden" name="switchName" value="read"> <cfinput type="button" bind="cfc:cfcs.messag
<cfform>
<cfinput type="hidden" name="switchName" value="read">
<cfinput type="button" bind="cfc:cfcs.messages.toggle({toggle@click},{switchName@none})" name="toggleRead" value="Read" bindonload="true">
</cfform>
在cfc中
<cffunction access="remote" name="toggle" output="false" returntype="any" >
<cfargument required="true" name="toggle" type="any"/>
<cfargument required="true" name="switchName" type="any"/>
<cfif toggle eq "Read">
<cfreturn "Unread">
<cfelseif toggle eq "Unread">
<cfreturn "Read">
</cfif>
</cffunction>
这让我有了一些方法,就切换按钮标签而言,但我对如何获取初始db值以显示初始状态感到困惑
还有一种方法可以在bind语句中传递其他变量,而不使用隐藏字段和control@none格式化,例如,我需要传入messageID,以便更新正确的记录。如果我知道如何简单地以更好的方式传递switchName变量,我就不会输入switchName
非常感谢您能为我们提供的帮助。那么
<cfinput type="button" bind="cfc:cfcs.messages.toggle({toggle@click}, #switchName#)" value="#initialValue#" bindonload="false">
或者:
<cfajaxproxy bind="javascript:yourJSFunc({toggle@click})">
在您的JSFunc中,使用您需要的任何JSVar。这对Henry很有帮助
我让它工作了,虽然感觉有点笨拙
<cfform>
<cfinput type="button" STYLE="width: 80px; height: 22px;" bind="cfc:messageProcess.togglebool('#application.dsn#', '#url.messageID#',{toggle1@click},'referral', 'Referral', 'Message')" name="toggle1" value="" bindonload="YES">
<cfinput type="button" STYLE="width: 80px; height: 22px;" bind="cfc:messageProcess.togglebool('#application.dsn#', '#url.messageID#',{toggle2@click},'viewed', 'Read', 'Unread')" name="toggle2" value="" bindonload="YES">
<cfinput type="button" STYLE="width: 80px; height: 22px;" bind="cfc:messageProcess.togglebool('#application.dsn#', '#url.messageID#',{toggle3@click},'actioned', 'Actioned', 'Pending')" name="toggle3" value="" bindonload="YES">
</cfform>
和cfc
<cfcomponent>
<cffunction access="remote" name="togglebool" output="true" returntype="any" displayname="Toggle boolean value in message record" hint="Toggles boolean value in message record">
<cfargument required="true" name="dsn" type="string"/>
<cfargument required="true" name="messageID" type="numeric"/>
<cfargument required="true" name="buttonLabel" type="string"/>
<cfargument required="true" name="switchName" type="string"/>
<cfargument required="true" name="switchOnLabel" type="string"/>
<cfargument required="true" name="switchOffLabel" type="string"/>
<cfset var returnMessage = "" />
<cfset var temp = "" />
<cfquery datasource='#arguments.dsn#' name="getSwitchData">
SELECT #arguments.switchName#
FROM messages
WHERE messageID=<cfqueryparam value="#arguments.messageID#" cfsqltype="CF_SQL_INTEGER"/>
</cfquery>
<cfset temp="getswitchdata."&#switchName#>
<cfif #Evaluate(temp)# is 1>
<cfset returnMessage="#arguments.switchOnLabel#">
<cfelse>
<cfset returnMessage="#arguments.switchOffLabel#">
</cfif>
<cfif buttonLabel eq "">
<cfreturn returnMessage>
<cfelseif buttonLabel eq "#arguments.switchOffLabel#">
<cfquery datasource='#arguments.dsn#'>
UPDATE messages
SET #arguments.switchName#=1
WHERE messageID=<cfqueryparam value="#arguments.messageID#" cfsqltype="CF_SQL_INTEGER"/>
</cfquery>
<cfreturn "#arguments.switchOnLabel#">
<cfelseif buttonLabel eq "#arguments.switchOnLabel#">
<cfquery datasource='#arguments.dsn#'>
UPDATE messages
SET #arguments.switchName#=0
WHERE messageID=<cfqueryparam value="#arguments.messageID#" cfsqltype="CF_SQL_INTEGER"/>
</cfquery>
<cfreturn "#arguments.switchOffLabel#">
</cfif>
</cffunction>
如果有更巧妙的方法,请告诉我