Power Apps 複数選択コンボボックスを使用したギャラリーのフィルター式|委任警告の解消についても

複数選択可能なコンボボックスでギャラリーをフィルターする方法を聞かれたので、メモ。

スポンサーリンク

事前準備

以下のSharePointリストと、
以下のDataverseテーブルで、
複数選択可能なコンボボックスで上記2つをフィルターするときの式を考える。
※未選択時は全アイテム表示
このとき委任がきいているかを確認するため、データ行の制限を3にしておく。
委任がきいている場合→「ddd」「eee」のアイテムがフィルター後も表示される

SharePointリストの場合

最もシンプルな式は下図のようになると思うけど、残念ながらSharePointリストがデータソースだと委任の制限に引っかかってしまう。
委任を守りつつ複数の値でフィルターをかけたい場合、どうしても以下の図のような式になってしまうため、注意書きとして「先頭N個の選択までフィルタ可能」と書いておくしかないかなと。
※下図の例だと先頭3個まではフィルタ可能
Filter(SampleList As item,
    IsBlank(ComboBox1.SelectedItems) || IsEmpty(ComboBox1.SelectedItems) ||
    (CountRows(ComboBox1.SelectedItems) > 0 && item.Title = Index(ComboBox1.SelectedItems,1).Value) ||
    (CountRows(ComboBox1.SelectedItems) > 1 && item.Title = Index(ComboBox1.SelectedItems,2).Value) ||
    (CountRows(ComboBox1.SelectedItems) > 2 && item.Title = Index(ComboBox1.SelectedItems,3).Value)
)
※ちなみに以下の式だとギャラリー自体が動作しない。
これは、SelectedItemsが0個とかのときにIndex関数でアイテムにアクセスして内部でエラーが発生しているため(だと思われる)。

Dataverseの場合

Dataverseの場合は以下の図のシンプルな式で委任機能も問題なく動作する。
Filter(SampleTable, 
    IsBlank(ComboBox1_1.SelectedItems) || IsEmpty(ComboBox1_1.SelectedItems) || 
    Name in ComboBox1_1.SelectedItems.タイトル
)

やっぱりDataverseはとても楽。

おまけ:コンボボックスの選択肢がマスタテーブルを参照する場合

以下のように選択肢をマスタとして定義する場合は、
SharePointリストのギャラリーはこんな式になって、
Dataverseの式はこんな感じになる。

関連記事

コメント

タイトルとURLをコピーしました