1

これは、mySQL バックエンドで動作します

フォームで...

   <cfselect name="to" size="1" bind="cfc:cfcs.messages.getOrganisations()" bindonload="yes" value="organisationID" display="organisationName" required="Yes">
     </cfselect>

CFCで

<cffunction access="remote" name="getOrganisations" output="false" returntype="query" displayname="Get organisations list" hint="This method returns a list of organisations as a query.">
    <cfquery name="getOrganisations" datasource='myData'>

    SELECT organisationID, organisationName, acceptsReferral, metadataTemplate
    FROM organisations
    WHERE acceptsReferral
    ORDER BY organisationName ASC;

    </cfquery>
    <cfreturn getOrganisations>
</cffunction>

しかし、私が試してみると

<cffunction access="remote" name="getOrganisations" output="false" returntype="query" displayname="Get organisations list" hint="This method returns a list of organisations as a query.">
    <cfquery name="getOrganisations" datasource='myData'>
    SELECT '0' AS organisationID, 'Select' AS organisationName, false AS acceptsReferral, 0 AS metadataTemplate
    FROM organisations
    UNION
    (SELECT organisationID, organisationName, acceptsReferral, metadataTemplate
    FROM organisations
    WHERE acceptsReferral
    ORDER BY organisationName ASC)

    </cfquery>
    <cfreturn getOrganisations>
</cffunction>

クエリの先行行を選択して取得しようとすると、firebug でこの AJAX エラーが発生します "JSON シリアル化エラー: バイナリ データを JSON にシリアル化できません"

ヘンリーの提案は上記を解決しましたが、次のビットで再び少しイライラし、2つの選択をリンクしようとしました.

これは機能します...

<cfselect name="attentionOf" size="1" bind="cfc:cfcs.messages.getOrganisationMembers({to})" bindonload="false" value="userID" display="name" required="No" queryPosition="below">
<option value="0">Select</option>
</cfselect>

...しかし、バインドされたフィールドで DSN を渡そうとすると、これから「バインドの解析エラー」が発生します

<cfselect name="attentionOf" size="1" bind="cfc:cfcs.messages.getOrganisationMembers({to}, 'mySqlData')" bindonload="false" value="userID" display="name" required="No" queryPosition="below">
    <option value="0">Select</option>
</cfselect> 
4

1 に答える 1

1

ああ、これはあなたが望むものだと思います。

<cfset organisations = createObject("component", "cfcs.messages").getOrganisations()>

<cfselect name="to" query="organisations" 
          value="organisationID" display="organisationName"
          required="Yes" queryPosition="below">
    <option value="0">Select</option>
</cfselect>

バインドを使用するために本当に必要な場合は、queryPosition属性が機能するかどうかを試してください。queryPositionで動作しない場合はbind、追加のダミー行を挿入する必要があります。Query of Queries でunionを使用する方が簡単かもしれません。

于 2010-06-23T01:17:25.860 に答える