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
は非委任(青い点の警告)になりがちです。大規模データの検索は StartsWith
や Search
の利用を検討してください。
フォームとの連携(単一 Choice 例)
SharePoint の単一 Choice 列に書き込む場合:
// データカードの Update プロパティ
DropdownChoice.Selected.Value
Lookup 列はレコード型(Id/Value 等)を求めます。フォームの既定のバインドに準拠するか、Patch を使う場合はスキーマに合わせたレコードを構築してください。
よくあるエラーと対処
- 互換性のない型: Text と Record を混在。
.Selected.Value
もしくは表示列を明示。 - 空白を保存してしまう: AllowEmptySelection/Reset の扱いと検証(必須チェック)を見直す。
- 初期値が効かない: Default は Items に存在する値と一致させる(前後空白・大小を確認)。
実務レシピ集
- 固定選択肢+既定値
// Items
["高", "中", "低"]
// Default
"中"
- SharePoint の Choice 列を表示
// Items(単一 Choice 列)
Choices(@"リスト名".'優先度')
// 選択の表示(クラシック)
DropdownPriority.Selected.Value
- 初期値をデータに合わせて設定(編集フォーム)
// データカード内のドロップダウン Default
ThisItem.'優先度'.Value
- 連動(カテゴリ→アイテム)
// 親
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 コントロール
実装の現場では「型」と「委任」を意識するとトラブルが激減します。単一選択ならまずはドロップダウン、要件が増えたらコンボボックスを検討しましょう。
💭この記事はいかがでしたか?
あなたの感想やご意見をお聞かせください。今後のコンテンツ改善の参考にさせていただきます。
📤この記事をシェア
この記事が役に立ったら、ぜひ他の人にも共有してください!
⚠️ 記事の内容は投稿時点での情報です。最新の情報については公式サイト等でご確認ください。
🔄 内容の正確性には注意を払っていますが、誤りがある場合はお知らせください。