ユーザが入力した値を、フォーム内の 1 つまたは複数のフィールドで使用して、選択ボックス内の値を決定することができます。 ユーザに対して、複数の有効な選択肢のセットを 2 つ提供し、ユーザがカスタムの選択内容を指定できないようにするには、この方法が便利です。 ユーザに選択可能な複数のオプションを提供しながらも、ユーザの選択の標準化および妥当性を確保したい場合に役立ちます。
この方法を使用する典型的な例としては、国および州の選択ボックスがあります。 reportobjid および reportobjvars 属性を使用して、ユーザが選択した国の州だけが州の選択ボックスに表示されるよう設定できます。
ある選択ボックスに対してユーザが入力した値に基づいて、他の選択ボックスに事前入力されるようにするには、以下の手順に従います。 この手順では、国と州のシナリオを例として使用します。
この例では、データベースから国のリストを取得するレポート データ オブジェクトを作成します。
フォームが表示されると、レポート データ オブジェクトが実行され、コンボ ボックスに結果の値が読み込まれます。
このデータ オブジェクトの ID は、後で参照できるように書きとめておきます。
MDB のデータ オブジェクトのクエリとして、以下に例を示します。 この例は、フォームが添付されているサービスまたはサービス オプションに適用可能な国のリストを返します。
SELECT country_id,country_name from my_country_table
このクエリによって、以下が実行されます。
注: データ オブジェクトを使用してコンボ ボックスに事前入力する場合、選択ボックスにオプションは一切追加しないでください。これらのオプションは、ユーザがフォームを開いたときに無視されます(使用されません)。 選択ボックスのオプションはすべて無視され、データ オブジェクトのみが使用されます。
注: 別のロケールのユーザがこのフォームを使用する場合に、ツールチップのテキストまたは選択ボックスの名前を任意でローカライズできます。
この例では、ユーザが選択した国に基づいて、データベースから州を取得する 2 番目のレポート データ オブジェクトを作成します。 手順 1 のガイドラインに従って、2 番目のレポート データ オブジェクトを作成します。
select state_id,state_name from my_state_table where country_id=%selected_country%
有効な値は以下のいずれかです。
注: この例のように、文字列は一重引用符で囲みます。 引用符で囲まれた文字列内に、リテラルの一重引用符またはアポストロフィを指定する必要がある場合は、エスケープ文字としてバックスラッシュ(¥)を使用します。 例: $({‘what¥’s the status?’})
$({'reportvar':_.user.lastName,’reportvar1’:’abc’,’reportvar2’:12,’reportvar3’:foo()})
この例では、ユーザが選択した国に基づいて、データベースから州が事前入力される 2 番目の選択ボックスを作成します。 州の選択ボックスの reportobjvars 属性には、ca_fdGetSelectedOptionValues という名前の事前定義された JavaScript 関数を以下のように指定します。
$({'selected_country':ca_fdGetSelectedOptionValues ('<form _id> ','country' )[0]})
最初の選択ボックスを含むフォームの _id 属性の値を指定します。 手順 2 でこのフォームを参照します。
最初の選択ボックスの _id 属性の値を指定します。 手順 2 でこの値を作成および記録します。
ca_fdFetchSelectData('<form _id>','<field _id>');
2 番目の選択ボックスを含むフォームの _id 属性の値を指定します。 手順 4 でこのフォームを参照します。
2 番目の選択ボックスを含むフォームの _id 属性の値を指定します。 手順 4 でこの値を作成および記録します。
この例では、国の選択ボックスの onchange 属性を以下のように指定します。
ca_fdFetchSelectData('<form _id>','<state field _id>');
ベスト プラクティスとして、実稼働環境で使用する前に、テスト環境において、サービス内でフォームを使用してテストすることをお勧めします。
| Copyright © 2011 CA. All rights reserved. | このトピックについて CA Technologies に電子メールを送信する |