Power Apps で別のデータソースからコンボボックスのリストを取得して表示する
Power Apps で例えば出張報告書を作成する際に、訪問先の会社名や担当者名を入力する欄を作りたいとします。その際に、得意先名を毎回入力するのではなく別の SharePoint リストで作成された一覧表から会社名を選択式にできるようにします。
ちなみにドロップダウンではなくコンボボックスを利用する理由はワード検索を利用できるようにするためです。候補が何千件もある場合にスクロールで会社名を探すのは大変ですので、検索機能が付属しているコンボボックスを使うというわけです。
データソース
データソースの読み込みは SharePoint リストの場合は簡単です。Power Apps 画面の左側のバーからデータを選択し、『+データの追加』から『コネクタ』→『SharePoint』を選択し、リストがあるサイトを選択します。リストの一覧がでるので、該当のリストを選んで『接続』します。
コンボボックスをフォームに配置したら右側のプロパティからデータソースを選択します。
『主要なテキスト』を一覧に表示したい列名を選択して、『SearchField』は検索で使用したい列を選択します。別で検索ワード用の列を設けていないのであれば『主要なテキスト』と同じで良いでしょう。
DefaultSelectedItems の選択
テキスト入力やドロップダウンでは『Default』に設定するデフォルト値ですが、コンボボックスの場合は『DefaultSelectedItems』に設定します。
ドロップダウンやテキスト入力ボックスと違うのはデフォルト値の設定の方法です。通常であれば以下のように指定します。
Parent.Default
コンボボックスの場合は、Table値が必要でこのままでは型が違うためエラーになります。そこで以下のように入力します。
If(
IsBlank(Parent.Default),
Blank(),
LookUp(
'連絡先',
companyName = Parent.Default
)
)
この式は、親要素のデフォルト値が空白である場合は空白を返し、そうでない場合は『連絡先』テーブルから『companyName』が『Parent.Default』と一致する行を検索して返す、というものです。
Update
最後に親要素(フィールド)の『Update』にコンボボックスの値を読み込むように指定します。
ComboBox2.Selected.companyName
『companyName』の部分はプロパティの『主要なテキスト』で設定した列名になります。例では『会社名(companyName)』の列を使用したのでこのように指定しています。
これで外部ソースからリストを取得し、コンボボックスの選択肢に表示できるようになりました。