0

バインドと CFC を使用する 2 つの cfselect ボックスがあります。1つは州です。州を選択すると、2 番目の cfselect (counties) がその場で入力されます。

bind 属性を使用してこれを行う前は、次のような queryPostion="below" 属性を使用して、基本的にオプション ボックスに空白行を配置していました。州と郡の両方の選択ボックスで同じことをしたいのですが、それぞれのオプションとして "" 値 (または "ALL" 値) を使用したいのですが、queryPostion は機能しなくなりました。確実な回避策。

//original... leaves a blank option:
     <cfselect enabled="No" name="search_state" multiple="no" query="get_States" value="StateUSAbb" display="StateName" queryPosition="below">
                      <option></option>
    </cfselect>

  //now, w/bind, doesn't work:


    <cfselect bind="cfc:states.getStates()" bindonload="true" name="search_state" 
                  value="StateUSAbb" display="StateName">    
    </cfselect>

    <cfselect bind="cfc:states.getCounties({search_state})" bindonload="true" name="search_county" value="FIPS_County" display="CountyName" >
    </cfselect>

両方のクエリのUPDATEソリューション:

     SELECT DISTINCT tblLoc.StateUSAbb, lkuState.StateName
        FROM lkuState INNER JOIN tblLoc ON lkuState.FIPS_State = tblLoc.FIPS_State
        WHERE (lkuState.StateName <> 'New Brunswick')
        UNION
        SELECT '' AS StateUSAbb, '' AS StateName
        FROM lkuState
        ORDER BY StateName

SELECT '' AS FIPS_COUNTY, '' as CountyName
        FROM lkuCnty
        UNION
        SELECT FIPS_County, CountyName
        FROM lkuCnty
        WHERE StateAbb = '#ARGUMENTS.stateabb#'
        ORDER BY CountyName
4

4 に答える 4

2

私が見つけた最も簡単な方法は、cfc のクエリに空白 (またはプレースホルダー) のデータ行を挿入することです。何かのようなもの:

select "0" as id, "Choose...." as value
union
select id, value from tableName
于 2010-10-13T17:52:40.267 に答える
1

これは states.cfc getCounties() 関数で処理されます。空白のレコードを返す必要があります。さらにヘルプが必要な場合は、ここに投稿してください。

于 2010-10-13T17:52:43.030 に答える
0

FYI バインド式は、CF9 でエンティティの配列を返す関数にバインドできます。

その場合、ArrayPrepend() は QoQ w/ UNION ALL と同じように機能します。

于 2010-10-13T22:04:26.490 に答える
0

更新:気にしないでください。私が返信している間に同じことがすでに提案されているようです;-)

私の知る限り、バインドされた選択リストに空の要素を作成するための組み込みオプションはありません。少なくともCF8ではそうではありません。

バインドによってリストの内容が置き換えられるため、クエリ結果に空のオプションを追加する必要があります。1 つの手法は、UNION を介してクエリ結果に空のオプションを追加することです。

リストの値に応じて、

SELECT 0 AS SortOrder, '' AS StateUSAbb, '--- ALL ---' AS StateName
UNION ALL
SELECT 1, StateUSAbb, StateName 
FROM   YourTable
WHERE  (some condition ...)
ORDER BY SortOrder ASC

...またはおそらく

SELECT '' AS StateUSAbb, '--- ALL ---' AS StateName
UNION ALL
SELECT StateUSAbb, StateName 
FROM   YourTable
WHERE  (some condition ...)
ORDER BY StateUSAbb

UPDATE 興味深い点として、UNIONとUNION ALLの使用の違いは、UNIONが重複を削除することです。UNION ALL はそうではありません。UNION クエリは少しコストがかかるため、必要な場合にのみ使用します。


于 2010-10-13T17:55:16.667 に答える