Power Appsでデータを絞り込む手法について画面イメージ付きで紹介するシリーズです。
今回は、Filter関数で複数条件によって絞り込む方法を紹介します。
参考記事
本記事を読む前に、以下の参考記事を10回読んでください。
Power Apps で Google 検索のような複数ワードの部分一致 OR 検索を行う方法
画面イメージ

画面イメージです。下のボタンで選択された種類列の値のみが表示されるようにしていきます。
作り方
コレクションを作成
ボタンに表示するテキスト、どのボタンが押されている状態かを保存しておくためにコレクションを作成します。
App.OnStartに以下を設定します。
ClearCollect(ColCategory,
    {Category:"iPhone",IsSelect:false},
    {Category:"iPad",IsSelect:false},
    {Category:"Mac",IsSelect:false}
)
OnStartを実行しておきましょう。
Categoryを必要な数だけ定義し、IsSelectのデフォルト値を設定します。(今回はすべてfalse)
ギャラリーを設定

このように横方向のギャラリーを設置、その中にボタンを設置します。また、以下の様にそれぞれのプロパティを設定します。
| コントロール | プロパティ | プロパティの値 | 
| ギャラリー | Items | ColCategory | 
| ギャラリー | OnSelect | UpdateIf(ColCategory, Category=ThisItem.Category, {IsSelect:true} ) | 
| ボタン | Text | ThisItem.Category | 
| ボタン | OnSelect | Select(Parent) | 
| ボタン | Color | If(ThisItem.IsSelect, RGBA(56, 96, 178, 1), RGBA(255, 255, 255, 1) ) | 
| ボタン | Fill | If(ThisItem.IsSelect, RGBA(255, 255, 255, 1), RGBA(56, 96, 178, 1) ) | 
ボタンのデザインなどは分かりやすいようにお好みで変えてください。
絞り込みしたいギャラリー・データテーブルの設定
最後に、絞り込みしたいギャラリーやデータテーブルの設定をします。
ギャラリーやデータテーブルのItemsを以下の様に設定してください。
Filter(
    Apple製品一覧,
    Or(
        Last(FirstN(Filter(ColCategory,IsSelect),1)).Category=種類.Value,
        Last(FirstN(Filter(ColCategory,IsSelect),2)).Category=種類.Value,
        Last(FirstN(Filter(ColCategory,IsSelect),3)).Category=種類.Value
    )
)このままでも複数条件で検索できますが、何も選択していない時には何も表示されません。
どのカテゴリーも選択していない場合にすべてのデータを表示させるためには、以下の様にします。
If(CountRows(ColCategory)=0,
    Apple製品一覧,
    Filter(
        Apple製品一覧,
        Or(
            Last(FirstN(Filter(ColCategory,IsSelect),1)).Category=種類.Value,
            Last(FirstN(Filter(ColCategory,IsSelect),2)).Category=種類.Value,
            Last(FirstN(Filter(ColCategory,IsSelect),3)).Category=種類.Value
        )
    )
)設定したカテゴリーの数だけOr条件を作成するのがポイントです。
Filter関数で複数条件絞り込む方法 まとめ
- Filter関数で複数条件によって絞り込むには、Or関数と併用する
- 別途作成したコレクションでTrueになっているもののみ検索条件とする
- 未選択の時にすべてのデータを表示するにはIfとCountRowsを使用して条件分け
といった方式を今回ご紹介しました。
今後も良さげな検索方法を見つけたらご紹介します。
 
 


コメント