Power Apps コンボボックスの値をアプリ側から操作してみた|インデックスで選択を指定したりログインユーザーを選択したり

Power Appsのコンボボックスって高機能だけど、ちょっと使い方のイメージがつかみにくい。。。

今回は「アプリ側からコンボボックスの選択状態を操作するのってどうやるの?」という状態に陥ったので、解決方法をメモ。

スポンサーリンク

やりたいこと

例えば、「きつねさん」が選択されている状態で、「コアラさん」のアドレスを入力してボタンを押すと、

コンボボックスの中身がコアラさんになったり、

「きつねさん」が選択されている状態で、インデックスを指定してボタンを押すと

インデックス1番目の「ごりらさん」がコンボボックスで選択されるようにしたい!

前提:コンボボックスの中身のイメージ

コンボボックスの中には、文字列の配列ではなく、「オブジェクト」の配列が入っているぽい。

イメージ的には、

  • きつねさん
  • こあらさん
  • ごりらさん

みたいな1次元データじゃなくて、

  • {DisplayName:きつねさん, Mail:kitsukitsu@…}
  • {DisplayName:こあらさん, Mail:koakoa@…}
  • {DisplayName:ごりらさん, Mail:gorigori@…}

みたいな2次元データが入っている。

つまり、コンボボックスの選択アイテムをいじりたいときは、「こあらさん」と指定するのではなく、「{DisplayName:こあらさん, Mail:koakoa@…}」と指定しなきゃだめっぽい。

準備

今回は簡単に用意できるデータとして「Office365コネクタのSearchUserV2」を使用。

まずはOffice365コネクタを追加して、
コンボボックスのItemsにSearchUserV2のvalueプロパティを指定。
そしたら、コンボボックスの「フィールドの編集」から、主要なテキストにDisplayNameを、SearchFieldにMailを指定してあげる。
そうするとユーザーの名前が出てくる。
今回は「複数選択」無しにしておく。
同じコンボボックスをもう1個作って、テキストボックスを2つ、ボタンを2つ置いたら準備完了。

インデックスを入力するテキストボックスは書式を数値にしておく。

コンボボックスの選択を操作する方法

コンボボックスの選択アイテムを操作する方法は、以前の記事「テキストボックスをアプリから操作する方法」と一緒で、

  1. コンボボックスのDefaultSelectedItemsに変数を使った検索系関数を入れる
  2. ボタンが押されたら変数に選択したいデータを代入
  3. Reset関数を呼び出してコンボボックスをリセットする

という手順。

アドレス指定でコンボボックスを操作

まずは、オブジェクトの情報(今回はメールアドレス)を指定してコンボボックスの選択アイテムを操作。

ボタンのOnSelectの中で、変数にテキストボックス内の文字列(アドレス)を入れる処理と、コンボボックスをリセットする処理を書く。
そしたら、コンボボックスのDefaultSelectedItemsにこんな式を書く。

こうすると、O365のSearchUserV2の中から変数「mail」とメールアドレスが一致するオブジェクトをDefaultSelectedItemsに指定できる。

結果、テキストボックスにこあらさんのアドレスを入れてボタンを押すと、こあらさんが選択された!
他にも例えば、常にログインユーザーを選択したい!みたいなときは、DefaultSelectedItemsをこう直してボタンを押すと
できた!

もちろんメール以外の情報でも指定できるし、orやand条件でも指定できる。

LookUp関数じゃなくてSearch関数とか使えばもっと細やかに指定できるかも。

インデックス指定でコンボボックスを操作

続いてインデックス指定でコンボボックスの操作。

インデックスを指定する場合はFirstN関数とLast関数を使用する。

詳しくは下のページで丁寧に書いてくれているけど、要は

Last(FirstN(配列, インデックス))

と指定してあげると配列にインデックスでアクセスできる。
※先頭は0ではなく1

まずはボタンのOnSelectの中で、変数にテキストボックス内のインデックスを入れる処理と、コンボボックスをリセットする処理を書く。
そしたら、コンボボックスのDefaultSelectedItemsにこんな式を書く。
これだけで、例えばインデックスに1を指定しクリックすると、

と1番目のごりらさんが選択できるし、
インデックスに7を指定し、クリックすると、

7番目のねこさんが選択できた!

コンボボックスはオブジェクトが入っているので、色々と細やかな制御ができそうと思い少し好きになったw

個人的に、デザインはドロップダウンの方がおしゃれにしやすくて好きだけどw

コメント

タイトルとURLをコピーしました