こんにちは、あんこ先生です。
選択肢を作る際、どのコントロールを使おうか悩みませんか?
PowerAppsで選択肢と言えば、ドロップダウンコントロール、コンボボックスコントロール、リストボックスコントロールの3点が挙げられます。
検索や複数選択させたいなら、コンボボックスコントロールをオススメします。
なぜなら、①別途テキスト入力を用意せず検索できる、②複数選択も容易に設定できるからです。
とはいえ、ドロップダウンと比べるとコンボボックスは扱いに戸惑います。
今回は、「自由に選択肢を作りたい」、「選択肢列に複数データを保存したい」といった脱初心者の方を対象にコンボボックスコントロールの使い方と活用事例を紹介します。
この記事を読めば、具体的にできることやその設定方法がわかります。
きっと知らなかったことも書いてあると思いますので、最後までお付き合いください。
ユーザー列に書き込む場合は、コチラの記事をご覧ください。
Contents
- 1 コンボボックスコントロールの使い方と活用事例
- 2 主要プロパティの使い方│コンボボックス
- 3 データソースの指定│Items
- 4 初期値│DefaultSelectedItems
- 5 複数選択│SelectMultiple
- 6 検索許可│IsSearchable
- 7 検索対象│SearchFields
- 8 戻り値│コンボボックス
- 9 戻り値│SelectedItems
- 10 戻り値│Selected
- 11 その他プロパティの使い方│コンボボックス
- 12 入力許可│DisplayMode
- 13 コントロールの表示設定│Visible
- 14 変更時実行│OnChange
- 15 選択時実行│OnSelect
- 16 コンボボックスコントロールの活用事例とサンプルコード
- 17 選択したレコードだけのギャラリー作成
- 18 コンボボックスの連動
- 19 複数選択した値の保存
- 20 選択肢にない値の保存
- 21 検索値の取得
- 22 検索値が選択肢に含まれているか判定
- 23 選択件数の取得
- 24 選択上限の設定
- 25 コンボボックスコントロールのまとめ
コンボボックスコントロールの使い方と活用事例
コンボボックスコントロールとは│ComboBox
文字入力と項目の選択の両方を受け付けることができるコントロールのことです。
複数の機能を持ち合わせているため、コンボボックスと呼ばれています。
PowerAppsでは、テキスト入力とリストボックスの機能を兼ね備えています。
ユーザーが、用意された選択肢から選べるようにするコントロールで、検索と複数選択も可能です。
選択肢は最大500件まで表示できます。
ドロップダウンコントロールとの違い
コントロール単体で検索ができること、複数選択できることが相違点です。
指定したデータソースが500件超の場合、この検索機能では500件以降を抽出できません。
また、戻り値がテーブルになっているため扱いも異なります。
コンボボックスコントロールの設置方法
リボンの挿入から下記アイコンを選べばコンボボックスコントロールが追加できます。
主要プロパティの使い方│コンボボックス
データソースの指定│Items
選択元となるテーブル、またはテーブルとその項目列を指定します。
//テーブル
テーブル名
//項目列
テーブル名.項目列名
列の種類が選択肢の場合、Choices関数を使うことでその選択肢を参照できます。
Choices(テーブル名.選択肢列)
また、Distinct関数で重複を排除した選択肢の作成も可能です。
Distinct(テーブル名,重複排除列).Result
初期値│DefaultSelectedItems
ユーザーが選択する前の初期値です。
指定する値はテーブルまたはレコードで与えます。
Reset関数実行後も、ここで指定した値になります。
複数選択│SelectMultiple
複数選択を許可するか設定できます。
ここで許可しても、保存先の選択肢列が複数選択可能になっていないと保存できません。
SharePointリストの設定を確認しましょう。
検索許可│IsSearchable
入力した文字で検索を許可するか設定できます。
検索対象│SearchFields
検索対象となる項目です。
氏名と住所など複数の項目を指定することも可能です。
戻り値│コンボボックス
戻り値│SelectedItems
選択された項目の一覧をテーブルで返します。
戻り値はテーブルのため、ラベルなどで参照するにはレコードを特定する必要があります。
テーブルとレコードの違いはこちらの記事を参考にしてください。
戻り値│Selected
選択された項目、複数選択の場合は最後に選択したレコードを返します。
戻り値はレコードのため、ラベルなどで参照するにはフィールド名の指定のみで行えます。
その他プロパティの使い方│コンボボックス
入力許可│DisplayMode
ディスプレイモードを指定します。
ユーザー入力を許可する編集モード、データのみを表示する表示モード、無効にする無効モードがあります。
コントロールの表示設定│Visible
コンボボックスそのものの表示または非表示を指定します。
変更時実行│OnChange
ユーザーが選択を変更したときに実行するアクションです。
複数選択を許可している場合、選択するたびに実行されます。
選択内容に変更がなければ実行されません。
選択時実行│OnSelect
ユーザーがコンボボックスを選択したときに実行するアクションです。
選択肢ではなく、コンボボックスを選択した時点で実行されます。
コンボボックスコントロールの活用事例とサンプルコード
選択したレコードだけのギャラリー作成
コンボボックスの連動
Excelでよくみるアレです。
Filter関数を使って以前元の結果から抽出すれば作成できます。
プロパティの依存先…から選択しても作成できます。
//Items
Filter(colTest, 県 = cmbFirst.Selected.Result).市
複数選択した値の保存
前提として、保存先の列の種類が選択肢かつ複数選択可になっている必要があります。
図のようなエラーが表示された場合は、SharePointリストの設定が複数選択可能になっているか確認しましょう。
Patch(testSel,Defaults(testSel),{SelList:cmbSel1.SelectedItems})
選択肢にない値の保存
選択肢にない値は選べないため、検索値をそのまま保存します。
保存先が複数選択可になっている場合はテーブル、そうでない場合はレコードで指定します。
ただし、この方法で保存しても選択肢には登録されません。
//複数選択可
Patch(testSel,Defaults(testSel),{SelList:Table({Value:cmbSel1.SearchText})})
//複数選択不可
Patch(testSel,Defaults(testSel),{SelList:{Value:cmbSel1.SearchText}})
検索値の取得
SearchTextで取得できます。
検索値が入力されているかはIsSearchableで判定できます。
検索値が選択肢に含まれているか判定
CountRows関数でSearchTextの値がSelectedItemsに含まれているレコード数をカウントして求めます。
結果が1以上なら含まれています。
CountRows(Filter(testSel,ComboBox1.SearchText in SelList.Value ))
選択件数の取得
CountRows関数でSelectedItemsのレコード数をカウントして求めます。
CountRows(ComboBox1.SelectedItems)
選択上限の設定
複数選択を許可すると際限なく選択できます。
選択肢の中から5件を上限に選ばせる方法は次の通りです。
//OnChange
If(CountRows(Self.SelectedItems)<=5,
ClearCollect(colLimit,Self.SelectedItems),
Reset(Self)
)
//DefaultSelectedItems
colLimit
なお、コレクション部分を変数にすると1件選ぶたびに選択肢が閉じるようになります。
コンボボックスコントロールのまとめ
ドロップダウンと異なり、プロパティの数が多く、戻り値の扱いも複雑でしたね。
それでも主要プロパティをひとつずつ試してみれば理解が深まると思います。
今回紹介した機能を使って、すてきな選択肢を作成してみてください!
検索不要、単一選択でいいよって場合は、ドロップダウン強くオススメします。
具体的な使い方はこちらを確認してください。