- この記事の目的:
Power Appsに配置したコンボボックスは、Item プロパティで指定されたデータしか選択できないが、必要に応じて手動入力できるようにする - 結論:
- コンボボックスコントロールの Item プロパティに Microsoft 365 ユーザを指定していた場合は、独自の入力を行うことができない
- 手入力できるテキストインプット コントロールを重ねて、コンボボックスとテキストインプットを切り替えて対処するしかない
はじめに
Power Apps においてコンボボックスの Item プロパティに Microsoft 365 ユーザを指定していた場合に、テナント外のユーザを指定したくなった場合は個別に入力することができません。この記事では上記の解決方法を示していきたいと思います。
コンボボックスコントロールとは
コンボボックスコントロールの Items プロパティに選択元となるデータソースを指定することで、コンボボックス内の一覧を制御することができます。
データソースを指定した場合、基本的にはそのデータソース以外からのデータを入力することはできません。
データソースにデータを直接追加できる場合は実現可能ですが、Microsoft 365 (テナント)に存在しているユーザ情報をデータソースとして参照している場合は、直接データを追加することはできませんよね。
外部のユーザを手入力したいのであれば別のコントロールを使う
この場合、準備したコンボボックスは Microsoft 365 ユーザ専用で動作させるしかありません。そのため、手入力でデータを入れたいのであればコンボボックスとテキストインプットの2つのコントロールを組み合わせることになります。
でもこれだとさすがに見た目が悪いですよね。
利用者からすると「どっちのコントロールを使えばいいの?」といった感じで、混乱の原因になります。
トグルコントロールを使ってユーザ操作するコントロールの表示を制御
今回はこのトグルのコントロールを使って制御します。
- まずはコンボボックス コントロールに対して、以下のように Visible プロパティを変更します。
If(Toggle1.Value,true,false)
- 同じように追加したテキストInput コントロールに対しても、以下のように Visible プロパティを変更します。
If(Toggle1.Value,false,true)
ポイントは、トグル コントロールの切り替えで、 ①コンボボックス コントロール と ②テキストインプット コントロールとで、関数の中身がちょっと違うところです。
① If(Toggle1.Value,true,false)
トグルがオンになるとコンボボックス コントロールが非表示(Visible プロパティが true)になる
② If(Toggle1.Value,false,true)
トグルがオンになるとテキストインプット コントロールが非表示 (Visible プロパティが true)になる
それぞれのコントロールの Visible プロパティに対して上記2つの関数を設定し、トグルを操作すると以下のようになります。
コンボボックス・テキストインプットコントロールを重ねれば完成
最後は、トグルコントロールとテキストインプットコントロールを同じサイズにした後に、同じ座標でで重ねればOK。
手入力切替トグルによって、利用者はどちらかで入力を行うことができます。
まとめ
コンボボックスやドロップダウンコントロールを使うと、データソースを指定する性質上、該当コントロールのみで手入力の仕組みを作ることはできません。
ただし、場合によってはどうしてもデータソース外の入力を行わないといけない場合があります。その時は利用者に手入力操作などを促すようなUI(今回の記事だとトグルコントロール)を準備して、入力インターフェースを切り替える必要があるでしょう。
入力用のコントロールを2つに分けるということは、入力されたデータを処理する入り口もモードによって2通り準備しなければいけないので、少し手間になりますが、そこは変数などに値を入力して後続のコントロールに繋ぐやり方がベストなのではないでしょうか。
コメント