どのように私は、ブール、データベースの値を切り替えることがCFCにボタンコントロールをバインドすることができます
-
21-09-2019 - |
質問
私は、データベースのメッセージエントリに3つのブール値を切り替えるには、3つのボタンのシリーズを結合することが可能にしたいと思います。未読、actioned | |保留、紹介|メッセージおよびメッセージのエントリが一意のキー「メッセージID」を持つブールデータベースエントリが読み込まれます。私はボタンが(私はのbindOnLoad =「真」であると推定)の値を開始するレコードを表示します。
私は
の方にリンプしました<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>
これはこれまでのところ、それはボタンのラベルを切り替えますように、方法のいくつかが、私取得しますが、私は初期状態を表示するには、初期デシベル値を拾う方法についてfoxedています。
また、例えば隠されたフィールドやコントロール@なしの形式を使用せずにバインド文で他の変数を渡す方法があります私は正しいレコードを更新することができますので、私は、メッセージIDを渡す必要があります。私は単にbeter方法でswitchName変数を渡す方法を知っていた場合、私はswitchName入力に入れていません。
あなたが当てることができます任意の光のための多くのおかげで?
解決 2
ヘンリーを助けたこと。
私はそれが少しクルージ的に感じるのに...
、それが働いて得ました<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>
スリッカー方法があれば私に知らせてくださいます。
他のヒント
どの程度...
<cfinput type="button" bind="cfc:cfcs.messages.toggle({toggle@click}, #switchName#)" value="#initialValue#" bindonload="false">
または代わりに
<cfajaxproxy bind="javascript:yourJSFunc({toggle@click})">
とJSのVARの何が必要あなたのyourJSFunc、使用しているます。
所属していません StackOverflow