コンポーネントに表示されるデータのフィルタ処理
コンポーネントをエンドポイントにバインドすると、データの取得に使用するサービス・プロバイダにフィルタ式を定義することにより、コンポーネントに表示されるデータをフィルタできます。 式および静的コンテンツを使用して、フィルタ条件値を設定したり、Oracle JET演算子を使用してロジックを定義できます。
リストや表などのコレクション・コンポーネントのデータを表示するには、通常、コンポーネントは組込みのサービス・データ・プロバイダ(SDP)タイプに割り当てられている変数を使用してエンドポイントにバインドします。 この変数は、データの追加クイック・スタートを使用してコンポーネントをエンドポイントにバインドすると作成されます。 SDPタイプはエンドポイントからのデータのリクエストと受信を管理し、変数に格納されコンポーネントに表示されるデータをフィルタ処理するように構成できるfilterCriterionプロパティをサポートします。 filterCriterion構造を使用すると、データ取得時に使用するフィルタ式を多数表現できます。 詳細は、「サービス・データ・プロバイダ」を参照してください。
ノート:
より高度なフィルタリングを行うために、アクション・チェーンから呼び出すことができるJavaScriptフィルタリング関数を記述できます。 「JavaScriptの操作」と「関数呼出しアクションの追加」を参照してください。3つのfilterCriterion属性のプロパティ(attribute、op、value)を定義して、フィルタ式をビルドします。 エンドポイントに送信されると、フィルタ式は適切な"q"問合せ文字列に変換されます。 複数のフィルタ式を組み合せて複雑なフィルタを作成できます。 アクションの変数の割当てウィンドウを使用してフィルタ式を作成することも、アクションが定義されているJSONファイル(たとえば、main-start-page.json)を編集することもできます。 次の表では、フィルタ式で定義するfilterCriterion属性について説明します。
| 属性 | 説明 |
|---|---|
|
|
属性の名前。 通常、これはフィルタで処理するフィールドの名前です。 |
|
|
サポートされているOracle JET演算子。 共通演算子は、たとえば、 Oracle JET演算子のリストは、Oracle JavaScript Extension Toolkit (JET) APIリファレンスのAttributeFilterDefを参照してください。 |
|
|
属性の値。 これは、リクエストをフィルタするために使用される値です。 この値は、式(ページ変数など)または静的値(文字列や数値など)にマップできます。 |
変数エディタでSDPプロパティを編集してfilterCriterion属性を定義するか、変数、コンポーネントおよびアクション・チェーンを使用してページでフィルタ関数をビルドできます。 たとえば、filterCriterionを使用して表などのコレクションのフィルタを作成し、ページ変数を使用してユーザーが入力フィールドに入力した文字列を格納できます。 SDPがリクエストをエンドポイントに送信すると、フィルタはリクエストを処理し、フィルタ基準を満たすレコードのみを返して表示します。
フィルタ基準によるデータのフィルタ
リストや表などのコレクション・コンポーネントに表示されるデータをフィルタするには、データの取得に使用されるサービス・データ・プロバイダ(SDP)のfilterCriterionプロパティを定義します。 フィルタ・ビルダーを使用すると、フィルタのロジックの定義に使用するフィルタ条件値およびOracle JET演算子の定義に役立ちます。
データ・クイック・スタートの追加を使用してコレクション・コンポーネントをデータ・ソースにバインドすると、問合せの定義ステップでフィルタ・ビルダーを使用して、取得する必要がないデータをフィルタできます。 たとえば、"Active"という名前の列の値が"true"であるか、ページ変数の値と等しいレコードのみを取得するフィルタを作成できます。
- フィルタ基準のユーザー値を保持するページ変数を作成します:
- フィルタ基準は、各レコードを表示するために満たす必要がある条件です(例: "
If name contains user-value")。 - ユーザーの値は、レコードを表示するかどうかを確認するために、各レコードのフィルタ基準を評価するために使用されるテキストです。
- フィルタ基準は、各レコードを表示するために満たす必要がある条件です(例: "
- フィルタ基準を使用してSDPのデータをフィルタするアクション・チェーンをトリガーするUIコンポーネントおよびイベントを追加します。
- フィルタ処理を処理するアクション・チェーンを作成します。
フィルタを作成する方法を次に示します:
- 文字列タイプのページ変数(たとえば、
filterVar)を作成して、フィルタ基準のユーザーの値を格納します。ページ変数の値は、事前定義済(入力パラメータなど)にすることも、入力テキスト(下記参照)やコンボ・ボックス・コンポーネントなどのページ・コンポーネントにバインドして、ユーザーがテキストを入力したり、コンボ・ボックスから値を選択できるようにすることもできます。 この例では、入力テキスト・コンポーネントを使用して、フィルタ条件の値を入力し、アクション・チェーンをトリガーして表示データをフィルタします。
- ページ・デザイナで、表またはリストを含むページに入力テキスト・コンポーネントを追加します。 「プロパティ」ペインで、データタブを使用して、入力テキスト・コンポーネントを、基準のユーザー値を格納する変数にバインドします:

図filter-input-variable.pngの説明
- イベントタブを選択し、新規イベントボタンをクリックして、on 'value'を選択します:

図filter-input-event.pngの説明新しいアクション・チェーンが作成され、イベントに関連付けられます。 アクション・チェーン・エディタに移動し、フィルタリング用のアクション・チェーンを実装します。 変数の追加アクションを使用してアクション・チェーンを作成する方法については、「フィルタ・ビルダーを使用したSDPのフィルタ基準の作成」を参照してください。
テキストによるコンポーネント・データのフィルタ
ユーザー指定のテキストで単一の選択などのリスト・コンポーネントに表示される結果をフィルタする場合は、リスト・データの取得に使用するサービス・データ・プロバイダ(SDP)のTextFilterAttributesプロパティを構成できます。 TextFilterAttributesプロパティを使用すると、ユーザーが入力したテキストを検索する値を持つデータ・フィールドを指定できます。 各フィールドのユーザー・テキストと一致する値のみがリストに表示されます。
たとえば、単一選択コンポーネントを設定して従業員データをリストに表示し、ユーザーが「従業員の選択」フィールドにテキスト文字列を入力してデータをフィルタするとします:
図text-filter-attributes-data.pngの説明
これを実現するには、コンポーネントをエンドポイントにバインドするために使用するSDP変数のTextFilterAttributesプロパティを構成する必要があります。 たとえば、単一コンポーネントの選択では、employeeListSDP変数を使用して、getall_Employeesエンドポイントからデータをリクエストおよび受信できます。 この変数は通常、データの追加クイック・スタートを使用してコンポーネントをエンドポイントにバインドするときに作成されます。この変数は、「変数」ページに表示されます。 変数TextFilterAttributesプロパティを更新して、nameやcountryなどの1つ以上のデータ・フィールドを指定します:
図text-filter-attributes.pngの説明
SDPに基づくリストはクライアント側のデータの配列を保持しないため、フィルタ処理は" q "問合せ文字列をエンドポイントに送信することによって行われます。 エンドポイントは、一致する値をクライアントに返し、SDPに移入します。 したがって、ユーザーが「従業員の選択」フィールドにusと入力すると、Visual Builderは、usに一致する名前および国フィールドの値を検索します。 結果には、国USAに属している3人の従業員と、その文字を含む1人の従業員が含まれます: 
図text-filter-attributes-result.pngの説明
SDP定義にフィールドが含まれている限り、ユーザーに表示されないデータ・フィールドを含めることもできます。 たとえば、テキスト・フィルタ属性としてsalaryおよびphoneNumberを選択した場合、50を入力したユーザーは3つの結果が表示されます。これは、テキストがJohn DoeとShelley WhiteのSalaryフィールドとAlbert Cainの電話番号と一致しますが、電話番号はリストの列として表示されません。
URLによるコンポーネント・データのフィルタ
リストや表などのコレクション・コンポーネントのフィルタ条件を指定し、アプリケーション・ページURLにパラメータを追加してフィルタを適用できます。 これにより、ページURLをフィルタで簡単に共有できます。
filterCriterion属性を設定します。 この例では、変数p_categoryIdの値をビジネス・オブジェクトのproductCategoryフィールドにバインドします。
表のフィルタ条件としてページ変数を割り当てるには:
- ページの「変数」タブをクリックします。
- 「+変数」をクリックしてから、必要に応じてIDを更新し、「タイプ」を選択します。
- 入力パラメータを「有効」または「必須」に設定し、「パス・オンURL」を選択します。
- ページ・デザイナを開き、ページに表コンポーネントをドラッグします。
- 表を選択し、「データの追加」クイック・スタートをクリックして表に移入します。
- 「データの追加」ページで、使用するビジネス・オブジェクトを指定し、「次」をクリックします。
- 「データのバインド」ページで、表示するフィールドをバインドし、「次」をクリックします。
- クイック・スタートの「問合せ定義」ページで、「ターゲット」ペインのfilterCriterionビルダー・アイコンを展開し、attribute、opおよびvalueの値を個別に指定してフィルタを構築します。
- 「終了」をクリックします。



