Power Appsのドロップダウン徹底ガイド(連動・初期値・委任・実践レシピ)

ドロップダウンとコンボボックスの違い、Items/Default/AllowEmptySelection、連動(カスケード)、初期値の空白化、選択値の取得、検索・絞り込み、委任の注意点までを網羅。

Power Apps ドロップダウン徹底ガイド

Power Apps の「ドロップダウン(Drop down)」は、単一選択に特化した軽量コントロールです。本記事では基本から実務でよく使うレシピまで、迷いやすいポイントをまとめて解説します。

💡

要点

  • ドロップダウンは「単一選択」向け。検索や複数選択が必要ならコンボボックス。
  • 初期値は Default、空白初期化は AllowEmptySelection(クラシック)または Reset(モダン)。
  • レコード型/テキスト型の取り扱いを誤ると「互換性のない型」エラーになりやすい。

ドロップダウンとコンボボックスの違い

  • ドロップダウン: 単一選択のみ。シンプルで軽量。検索ボックスは非搭載。
  • コンボボックス: 検索・複数選択に対応。表示/検索列の指定が柔軟(DisplayFields/SearchFields)。

使い分けの目安

  • 単一選択だけでOK → ドロップダウン
  • 検索したい/複数選択したい → コンボボックス(DefaultSelectedItems を使用)

基本プロパティ(クラシック)

  • Items: データソースまたはテーブル。
  • Value: Items がレコードのとき、表示する列名(例: "Title")。
  • Default: 初期選択値(テキスト)。
  • AllowEmptySelection: true で空欄を許可(初期状態を空白にできる)。
  • Selected / Selected.Value / SelectedText.Value: 選択値の取得。

モダン コントロールでは UI/プロパティ名が一部異なります。特に AllowEmptySelection が無い場合は Reset() を使って空白に戻すのが実用的です。

まずは最小例

固定リストから季節を選ぶ例:

// DropdownSeason.Items
["春", "夏", "秋", "冬"]

// 初期選択(例: 秋)
// DropdownSeason.Default
"秋"

// 選択された値の表示
// Label1.Text
DropdownSeason.Selected.Value

Items がレコードのテーブルの場合:

// データ例(Collection)
ClearCollect(Products, 
    { Category: "果物", Name: "りんご" },
    { Category: "果物", Name: "みかん" },
    { Category: "野菜", Name: "にんじん" }
);

// DropdownProduct.Items
Products

// DropdownProduct.Value  ← 表示列
"Name"

// Label1.Text
DropdownProduct.Selected.Name

初期値を空白にする

  • クラシック: AllowEmptySelection = true を設定。選択済み項目を再選択で空白に戻せます。
  • モダン: AllowEmptySelection が無い場合は Reset(DropdownX) を実行(画面 OnVisible やボタンクリックなど)。
// 画面 OnVisible など
Reset(DropdownProduct)

空白行を先頭に追加する手もあります(選択を明示してもらいたい時に有効)。

// 空白レコード付き Items(クラシック想定)
With(
    {
        blankRow: { Name: "" },
        rows: SortByColumns(Products, "Name")
    },
    Table(blankRow) & rows
)

連動(カスケード)ドロップダウン

親の選択に応じて子の選択肢を絞る例:

// データ準備
ClearCollect(Products, 
    { Category: "果物", Name: "りんご" },
    { Category: "果物", Name: "みかん" },
    { Category: "野菜", Name: "にんじん" },
    { Category: "野菜", Name: "トマト" }
);

// 親: カテゴリ
// DropdownCategory.Items
SortByColumns(Distinct(Products, Category), "Result")

// 子: 製品名
// DropdownItem.Items
SortByColumns(
    Filter(Products, Category = DropdownCategory.Selected.Result),
    "Name"
)

// 子の表示列(クラシック)
// DropdownItem.Value
"Name"

SharePoint/Dataverse を使う場合は、Choice/Lookup 列の型に合わせて .Value や .Id を参照してください。Choice 単一列 → Selected.Value が基本です。

検索・絞り込み(ドロップダウンでの実装)

ドロップダウン自体に検索ボックスはありません。TextInput と組み合わせて Items を絞り込みます。

// TextInputSearch を用意

// DropdownCity.Items(StartsWith は多くのコネクタで委任対応)
SortByColumns(
    Filter(AllCities, StartsWith(Name, TextInputSearch.Text)),
    "Name"
)
⚠️

委任(Delegation)に注意

SharePoint などでは StartsWith は委任可能ですが in は非委任(青い点の警告)になりがちです。大規模データの検索は StartsWithSearch の利用を検討してください。

フォームとの連携(単一 Choice 例)

SharePoint の単一 Choice 列に書き込む場合:

// データカードの Update プロパティ
DropdownChoice.Selected.Value

Lookup 列はレコード型(Id/Value 等)を求めます。フォームの既定のバインドに準拠するか、Patch を使う場合はスキーマに合わせたレコードを構築してください。

よくあるエラーと対処

  • 互換性のない型: Text と Record を混在。.Selected.Value もしくは表示列を明示。
  • 空白を保存してしまう: AllowEmptySelection/Reset の扱いと検証(必須チェック)を見直す。
  • 初期値が効かない: Default は Items に存在する値と一致させる(前後空白・大小を確認)。

実務レシピ集

  1. 固定選択肢+既定値
// Items
["高", "中", "低"]
// Default
"中"
  1. SharePoint の Choice 列を表示
// Items(単一 Choice 列)
Choices(@"リスト名".'優先度')
// 選択の表示(クラシック)
DropdownPriority.Selected.Value
  1. 初期値をデータに合わせて設定(編集フォーム)
// データカード内のドロップダウン Default
ThisItem.'優先度'.Value
  1. 連動(カテゴリ→アイテム)
// 親
SortByColumns(Distinct(Inventory, Category), "Result")

// 子
SortByColumns(Filter(Inventory, Category = DropdownCategory.Selected.Result), "ItemName")

コンボボックスを選ぶべきケース

  • 検索ボックスが欲しい
  • 複数選択したい(SelectedItems で取得)
  • 既定値は DefaultSelectedItems にテーブルで指定(単一でも配列で指定)
// 例: 既定で 2 件選択
ComboEmployees.DefaultSelectedItems = Filter(Employees, Name in ["田中 太郎", "山田 花子"])

// 選択値の連結表示
Concat(ComboEmployees.SelectedItems, Email, ";")

参考

  • Microsoft Learn: Power Apps での Drop down コントロール
  • Microsoft Learn: Power Apps での Combo box コントロール
初期値を空白にしたい(モダン)
💡
AllowEmptySelection が無い場合は Reset(DropdownX) を実行するか、空白レコードを先頭に用意して選ばせる方法が現実的です。
文字列検索をしたい
💡
TextInput と組み合わせて Items を Filter します。委任可能な StartsWith を優先してください。
「互換性のない型」になる
💡
Items がレコードなら Selected は Record 型です。表示したい列(例: .Value, .Name)を明示してください。

実装の現場では「型」と「委任」を意識するとトラブルが激減します。単一選択ならまずはドロップダウン、要件が増えたらコンボボックスを検討しましょう。

💭この記事はいかがでしたか?

あなたの感想やご意見をお聞かせください。今後のコンテンツ改善の参考にさせていただきます。

📤この記事をシェア

この記事が役に立ったら、ぜひ他の人にも共有してください!

✍️記事について

この記事の内容に関してご質問やご指摘がございましたら、お気軽にお問い合わせください。

⚠️ 記事の内容は投稿時点での情報です。最新の情報については公式サイト等でご確認ください。

🔄 内容の正確性には注意を払っていますが、誤りがある場合はお知らせください。

📂同じカテゴリの記事

🏷️関連記事

最新記事

🚀もっと見つける