[Filter] ノード

[Filter] ノードの目的は、(一部の項目属性に基づいて) 特定の条件を実行するグリッドのレコードに対して、ユーザーが実行時にフィルタを適用できるように、フォームの一部にコントロールを挿入することです。この図を次に示します。

[Filter] ノードには、次のプロパティがあります:

[Name]: フォーム上でフィルタのコントロールを示す変数の名前を指定します。
[Description]: フィルタ変数のデスクリプションです。[Show description] プロパティが [True] の場合、フォーム内で変数自体の横に表示されるテキストブロックのキャプションを示します。上の例では、変数が PersonName であり、デスクリプションは Name です。したがって、次に示すように PersonName フィルタの横に「Name」が表示されます。

[Right Text]: このプロパティが空ではない場合、同じセル内で変数の横に挿入されるラベルを示します。このラベルに割り当てられるテーマは、[WorkWithPlus for Web Settings] -> [Theme] ノード内の [Att/Var Right Text] プロパティから適用されます。このプロパティの例は、[Attribute] ノードの同じプロパティに表示されます。
[Middle Text]: 範囲フィルタの両方のフィールド間に挿入されるラベルを示します (範囲フィルタのみに適用)。


[Domain/Attribute]:
フィルタ変数が基づくドメインまたは項目属性を示します。このプロパティは、空にすることができます。この場合、変数の名前が任意の項目属性の名前と同じである場合、変数はその項目属性に基づきます。そうでない場合、変数は任意の変数の既定定義である Numeric(4.0) として定義されます。上の例では、[Domain/Attribute] プロパティが「(none)」、変数の名前は PersonName (同じ名前を持つ項目属性が存在) であり、変数はその項目属性に基づいて定義されます。

[Form] カテゴリのプロパティ:

[Theme class]:

フィルタのテーマクラスです。

[Visible Condition]:

フィルタを表示するか非表示にするかを決定する条件を指定します。

[Advanced Security] カテゴリのプロパティ:

[Security Functionality Key]:

フィルタが一部のロールで表示可能かどうかを定義する、フィルタが持つ権限の名前を指定します。値が空の場合は、このオブジェクト内のフィルタに Security は追加されません。


 

[Values]

[Default]: ページが初めてロードされる際、フィルタ内に表示される既定値を指定します。つまり、既定でのフィルタの値を指定します。上の例では、[Default] プロパティが空であるため、WWPerson オブジェクトがロードされると、PersonName フィルタは空になります。
[All]: コントロールタイプがコンボボックスである変数にのみ適用され、コンボボックスにすべての値を選択するオプションを追加するかどうかを指定します。
[Prompt]: フィルタに適用可能な値を取得するために、プロンプトを使用するかどうかを指定します。

[Condition]

[Condition]: レコードが条件を満たしているかどうか、それによってレコードがグリッド内に含まれるかどうかを判断するために、各トランザクションレコードのフィルタ変数値および項目属性値内で実行される文を指定します。つまり、フィルタに関連付けられた条件文を示します。

上の例では、条件は「PersonName like &PersonName when not &PersonName.IsEmpty()」です。つまり、ユーザーがフィルタフィールドを空にするとすべてのレコードが表示されますが、ユーザーがその中に文字列を設定するとグリッドによってフィルタフィールド値で開始されるレコードのみが (like コマンドによって) 表示されるということです。[Conditions] に追加されたフィルタ条件を表示します:

実行時、フィルタフィールドが空のため、WWPerson ページをロードする際にすべてのレコードが表示されることが分かります:

次に、「m」をフィルタフィールドに設定すると、条件フィルタに従って、項目属性 PersonName が「m」で開始されるレコードのみがグリッドに表示されます。結果は次のとおりです:

条件を設定しないでフィルタを挿入することができます。これは、次の状況において便利です:

1. 2 つのフィルタ (変数) を OR エクスプレッションで連結した 1 つの条件に関連付ける状況

 

 

 

2. 外部キーの関連付けられた項目属性のみを表示するフィルタを追加する状況 (次の例と同様: CompanyId、CompanyName)。

 

 

[Control Info]

[Control info based on]: フィルタのコントロール情報が基づくドメインまたは項目属性を指定します。
[Conditions (Dynamic controls)]: コントロールに追加される条件を指定します (コントロールが [Dynamic Combo]、[Listbox]、または [Suggest] の場合のみ)。

[Location in father table] プロパティの詳細については、次のリンクを参照してください: Location in father table < 

フィルタの種類

フィルタにはさまざまな種類があり、各項目属性で選択することができます。フィルタは別のタイプに変換することもできます。変換するには、フィルタを右クリックし、目的のタイプの [~に変換] を選択します。

- 標準フィルタ: 検索に 1 つの条件のみを含むフィルタです。

- 動的な演算子が含まれたフィルタ: 選択に演算子を含むフィルタです。たとえば、単語またはコンテンツの先頭の値を検索します (Character フィルタの場合)

- 範囲フィルタ: エンドユーザーが範囲を選択できるフィルタです。このタイプのフィルタは、次の 2 つの状況での使用が考えられます。

  • フィルタに関連付けられた項目属性/変数が Date または Datetime である場合: [Picker] という名前の新しいプロパティが表示されます。
    • [Picker]: 2 つの異なるフィールドを表示するか、同じフィールドに範囲を表示するかを指定します。
    • 範囲を表示するように選択した場合、[Date range picker options] プロパティも表示されます。このプロパティを使用して、コントロール内に表示されるピッカーオプションをカスタマイズするためのプロシージャーを割り当てることができます。
  • フィルタに関連付けられた項目属性/変数が他のタイプである場合: 各範囲フィルタで 2 つの検索フィールド (ある値からある値までの範囲を指定) を追加します。

これらの範囲フィルタは、日付、日時、数字、文字の各フィルタを使用する場合に便利です。

範囲ピッカー

DatePicker002

別々の日付

- 複数選択フィルタ: このフィルタを使用すると、エンドユーザーはリストまたはプロンプトから複数のアイテムを選択することができます。複数選択フィルタを 1 つ追加するには、テーブルまたは動的フィルタを右クリックし、[FilterAttributeMultiple] を選択します。

[Type] プロパティで、「複数選択フィルタ」を [Prompt] にするか [DropDownSelector] にするかを定義します。

[Type Definition]

[Values Attribute]: グリッドのアイテムにフィルタを適用するために条件に記述する項目属性を定義します。
[Descriptions Attribute]: このフィルタで選択されるアイテムを明示するために表示されるデスクリプションを定義します。たとえば、Company の [Prompt] 複数選択フィルタでは CompanyId をキーにしてフィルタが適用されますが、フォームに表示されるのは Company の名前です。

[Condition]: グリッドのレコードに適用される条件を指定します。値が <default> の場合は、[Values Attribute] プロパティで選択した項目属性に関連する条件が自動的に設定されます。この条件の既定の設定は次のとおりです:<ATTRIBUTE> in &<ATTRIBUTE>Values when &<ATTRIBUTE>Values.Count > 0。通常、このプロパティの値は <default> にしておく必要がありますが、任意の条件を設定することもできます。

Prompt フィルタ DropDownSelector

複数選択フィルタの [Type] の値が [DropDownSelector] の場合は [Filter Definition] プロパティが表示されます。

このプロパティでは、フィルタの定義を設定から取得するか ([Filters] ノード -> 項目属性タイプに応じたフィルタ)、その項目属性用に特別にカスタマイズするかを指定します。このプロパティの値が [Custom] の場合、次のプロパティが表示されます:

  [Include Search Box]: その項目属性で、タイトルフィルタ内に検索ボックスを含めるかどうかを指定します。 

[Search Box Condition]: その列レコードにフィルタを適用するのに使用する条件を指定します。空白にした場合は既定の条件が使用されます (たとえば、Varchar または Character の場合は like を使用して検索が実行されます)。
[Data List]: 項目属性に、適用可能な値の動的リストを設定するか、固定リストを設定するかを指定します。

  • [Dynamic]: その列の実際の値のリストが含まれるようになります。この検索はサーバー側で実行されるため、現在のページの値だけでなく非表示のページの値も表示されます。
  • [Fixed]: 固定されたアイテムのリストが含まれるようになります。項目属性に列挙値が含まれている場合、または項目属性が固定アイテムの設定されたコンボボックスである場合に使用できます。項目属性でこの値を選択すると、新しいプロパティが表示されます。そのプロパティで、リストに表示する固定値を指定する必要があります。項目属性に列挙値が含まれている場合、または項目属性がコンボボックスである場合は、リストのこの値が自動的に取得されます。それ以外の項目属性の場合は、アイテムをコンマで区切って指定する必要があります。例: 1:Male, 男性,2:Female, 女性 (「1」は値、「Male」は名前、「男性」は説明です。)  

[Data List Include Total Records]: データアイテムの横に、その値を持つレコードの数を含めるかどうかを指定します。[Data List] が [Dynamic] の場合にのみ適用されます。
[Data List Max Values]: 動的データリストに表示するアイテムの最大数を指定します。

実行時には、次のように表示されます:

[選択フィルタ] をクリックすると、次のように表示されます:

Prompt 複数選択フィルタ

複数選択フィルタの [Type] の値が [Prompt] の場合は、アイテムを選択するために開く Prompt Multiple オブジェクトを選択する必要があります。このオブジェクトは、対応するインスタンスで作成する必要があります。上の例では、Company トランザクションのインスタンスで Prompt Multiple オブジェクトを作成する必要があります:

実行時には、次のように表示されます:

[選択] をクリックすると、Web フォームにアイテムが表示されます:

- 動的なフィルタ: (標準、範囲、動的な演算子が含まれた) すべての種類のフィルタをグループ化し、ユーザーが実行時にどのフィルタを適用するかを選択できます。