Power Apps ギャラリーに「すべて表示」を追加する|Or + IsBlankパターン完全解説

Dropdown でデータを絞り込めるようにしたら、次に欲しくなるのが全件表示に戻すオプションです。Or 方式と IsBlank 方式の2パターンを整理しておきます。どちらも覚えておくと実務で必ず役に立ちます。

All を追加したいという典型的なニーズ

Filter 関数と Dropdown を連動させると、常に何かが選択された状態になります。最初は気にならなくても、アプリを使っていると全件を見直したい場面が必ず出てきます。社内アプリを展開したとき、ユーザーから「全部表示に戻すにはどうするの?」という質問が来ることは珍しくありません。

対策は2つあります。Dropdown の選択肢に All を追加して Or 条件で全件を返す方法と、Dropdown の Allow empty selection をOnにして IsBlank で全件表示に切り替える方法です。それぞれ見ていきます。

パターン1:Or 方式(Dropdown に All を追加)

Distinct に All の行を追加する

Dropdown の Items に Distinct 関数を使っている場合、そのままでは All という選択肢が含まれません。Table 関数と Ungroup を組み合わせることで、Distinct の結果に All を先頭に追加できます。

Ungroup(
    Table(
        {Value: "All"},
        {Value: Distinct(Tasks, Status)}
    ),
    "Value"
)

少し複雑に見えますが、やっていることはシンプルです。{Value: "All"} という1行のレコードと、Distinct が返したテーブルを Table 関数でまとめ、Ungroup でフラットなテーブルに展開しているだけです。このテーブルを Dropdown の Items に指定します。

なお Distinct 関数は委任対象外のため、2,000件を超えるデータには注意が必要です。この点については委任警告の解説記事で詳しくまとめています。大量データを扱う場合は選択肢の管理方法も合わせて検討してください。

Or でAll 選択時のロジックを書く

Dropdown.Selected.Value が All のとき、フィルターをスキップして全件返すには Or 条件を使います。ギャラリーの Items を次のように変更します。

Filter(
    Tasks,
    Dropdown1.Selected.Value = "All" Or Status = Dropdown1.Selected.Value
)

Or の最初の条件(Dropdown1.Selected.Value = "All")が true になると、Power Apps の短絡評価により2つ目の条件は評価されず、行全体が true になります。結果として全件が返ります。All 以外の値が選ばれているときは最初の条件が false になるため、Status の一致で通常の絞り込みが行われます。

Default を設定して初期表示を All にする

アプリ起動時に All が選ばれた状態で全件表示したい場合は、Dropdown の Default プロパティに次を設定します。

{Value: "All"}

これだけで、アプリを開いたときに自動で All が選択された状態になります。

パターン2:IsBlank 方式(Allow empty selection)

Allow empty selection の設定

Dropdown には Allow empty selection(空選択を許可)というプロパティがあります。これをOnにすると、選択肢の最上部に空の選択肢(未選択状態)が表示されます。Dropdown を選択した状態で右ペインのプロパティを開き、Allow empty selection をOnに変更するだけです。

IsBlank で空選択を全件表示に変換する

空選択状態のとき Dropdown1.Selected.Value は空白(Blank)になります。IsBlank と Or を組み合わせることで、未選択時を全件表示に変換できます。

Filter(
    Tasks,
    IsBlank(Dropdown1.Selected.Value) Or Status = Dropdown1.Selected.Value
)

IsBlank(Dropdown1.Selected.Value) が true のとき、つまり何も選ばれていないとき、Or 条件全体が true になり全件が返ります。IsBlank は Power Apps でよく使う判定関数で、Filter・Search・LookUp の使い分け記事でも関連する使い方を紹介しています。

Or 方式 vs Allow empty 方式の比較

比較項目Or 方式(All 追加)Allow empty 方式
Dropdown の見た目All が選択肢に表示される空欄が表示される
ユーザーへの直感性All があり分かりやすい空欄の意味が伝わりにくい
実装の複雑さTable+Ungroup が必要IsBlank だけで完結
初期全件表示Default に {Value:"All"} を設定自然に空選択で全件表示

個人的には Or 方式の方が好きです。ユーザーに All という選択肢が見えるので、操作が直感的に理解できます。Allow empty 方式は実装はシンプルですが、空欄が何を意味するのか説明なしには伝わりにくいケースがあります。社内アプリを展開するとき、説明なしで使ってもらえる設計を優先しています。

一方で Allow empty 方式の方が合うケースもあります。たとえば検索フィルターとして使う場合、未入力=全件という動作は直感的です。アプリの用途やユーザーの特性に合わせて選んでください。

複数条件のフィルターに拡張する

全件表示を実装したら、次は複数の Dropdown を組み合わせた複合フィルターにも挑戦できます。And を使って複数条件をすべて満たす行を絞り込んだり、日付の範囲指定を組み合わせたりするパターンです。

たとえばステータスと担当者の両方で絞り込む場合は次のように書きます。

Filter(
    Tasks,
    (Dropdown1.Selected.Value = "All" Or Status = Dropdown1.Selected.Value)
    And
    (Dropdown2.Selected.Value = "All" Or AssignedTo = Dropdown2.Selected.Value)
)

条件のブロックを And で繋ぐだけです。各ブロックの中に Or 方式の全件表示ロジックをそのまま使い回せます。複合フィルターを作ると、アプリの検索・絞り込み機能が一気に実用的になります。

まとめ

全件表示への切り替えは、Or 方式と IsBlank 方式の2つで確実に実装できます。ユーザーの使いやすさを優先するなら Or 方式、コードをシンプルに保ちたいなら Allow empty 方式が向いています。

Filter 関数の基礎から全件表示対応まで身に付けると、業務アプリで必要なリスト絞り込みのほとんどを自力で作れるようになります。Filter 関数入門と合わせて読んでおくと、ギャラリーの絞り込み機能を一通り理解できます。楽しみながら開発を進めましょう。

ギャラリーの使い方を一覧でまとめた記事はこちらからご覧ください。

Xでフォローしよう