Power Apps 2つの選択肢(ドロップダウン)を連動させる|Distinct関数の使い方と解説も

今回はある値をドロップダウンで選択すると、その選択した値によって別のドロップダウンの内容を変える方法をメモ。

スポンサーリンク

準備

まずはこんな感じでデータをSharePointリストに用意する。
続いて、タイトルの他に2つの列(今回はどちらも文字列の列)を持つリストを作成。

2つ目のリストのカスタムフォームで、列「選択1」の値をマスタの列「タイトル」から選ぶと、列「選択2」の値がマスタのValue列から選べるようになる、といった機能を構築する。

例えば、選択1で「a」を選ぶと、選択2では「aaa, abb, acc」の中から選択ができる、みたいなイメージ。

Power Apps

ドロップダウンに変更する

まずはカスタムフォームを作成する。
初期画面はこちら。
続いて選択1と選択2をテキストボックスからドロップダウンへ変更する。

[フィールド]→[選択1]→[コントロールの種類]を、「テキストの編集」から「許可値」へと変える。
※選択2も同様に変更。

マスタとつなぐ

次にマスタデータが入ったSharePointリストと、このカスタムフォームをつなげる。

[データソース]→[コネクタ]→[SharePoint]を選択し、
マスタリストがあるSharePointサイトを選択、該当のリストを選択してアプリにSharePointリストをつなげる。

選択肢1の内容を表示する

まずは選択肢1と選択肢2のDataCardのロックを解除する。

選択肢のDataCardを選択して、[詳細設定]→[ロックの解除]をクリック。

つづいて、選択肢1のDataCard内のドロップダウンを選択し、Itemsプロパティに

Distinct([データリストの名前], [表示したい列の名前])

と入力する。

今回の場合は「マスタ1」というリストの「タイトル」列を表示したいので、以下の画像のようになる。
「Distinct」は重複なしでデータ列を返してくれる関数で、タイトル列の「a, a, a, b, …, c」といった重複があるデータを、「a,b,c」といった重複のない形式で返してくれる。
公式情報:Power Apps の Distinct 関数

これで、選択1にa~cが表示された。

※DataCardのUpdateプロパティがエラーを出す場合

エラーが出る場合はUpdateプロパティの式も変更する必要がある。
先ほどDistinct関数の式を入力したItemsプロパティの下に、Valueプロパティがある。
このValueプロパティに書かれている文字列(今回はResult)をUpdateプロパティの式で指定してあげれば直る(はず)

選択肢2の内容を表示する

選択肢2のドロップダウンを選択し、[プロパティ]→[依存先]を選択する。
[依存先]プロパティを以下のように編集する。

  • 親コントロール:選択肢1のDataCard内のドロップダウンを指定
  • 一致するフィールド:Distinctに入れた「リスト名」と「列名」を指定

これでドロップダウンの連動の構築は完了!

選択肢2に値が表示されない場合は、ドロップダウンに表示するValueプロパティの指定がずれている可能性あり。

動作

こんな感じで選択肢1の値を変更すると、選択肢2の内容が変わるようになった。

もちろんSharePointのリストに値を追加すれば、選択肢も更新される。

ここまで、コーディングがほぼ0というのがPower Appsのすごいところかなと。

参考サイト

もしよかったらご覧ください^ ^

コメント

  1. まさえもん より:

    はじめまして、こちらの記事を参考にワークフローを作成させていただきました。ありがとうございます。

    上記の設定で作成し上手く出来たのですが、いざ入力で[新規]→[保存]と行ったら選択肢②が空になってしまいます。

    何か設定で直せますでしょうか??
    お忙しいところ申し訳ございませんが、ご教授いただけたらと存じ上げます。

    • ふう より:

      まさえもんさん

      はじめまして、コメントありがとうございます!

      さて、ご相談いただいた「新規保存時に選択肢2が空になってしまう」件ですが、当方では現象を再現することができませんでした。。。

      そこであくまで想像にはなってしまうのですが、
       [保存]ボタン押下時、フォームの選択肢2ドロップダウンに正常に値が入っているが、SharePointのリストアイテムの選択肢2値が空になる
      という現象であれば、選択肢2ドロップダウンが入っているDataCardの、Updateプロパティの値に何か原因があるかもしれません。

      想像でしかお話しできず申し訳ありませんが、どうぞご確認の程よろしくお願いします!

  2. 初心者 より:

    初めまして、コメント失礼いたします。

    とても分かりやすい記事でした。ありがとうございます。
    こちら参考にさせていただき、2つの連動までは再現することができました。
    さらに1つ追加して、3つ連動させるにはどうしたら良いのでしょうか。
    2つ目が絞り込みと重複削除の2つの関数が必要になると思いますが、うまく設定できません。

    お手数ですが、ご教示いただけると幸いです。

    • ふう より:

      初心者さん

      初めまして、コメントありがとうございます!

      ドロップダウンを3つ連動させるイメージとして、
      「選択肢1を選ぶ→選択肢2の内容が決まる、選択肢2を選ぶ→選択肢3の内容が決まる」
      でお間違いないでしょうか?

      回答が少し長くなってしまいそうだったので、こちらに新しい記事を書きました!

      ぜひそちらをご覧いただければと思います^ ^
      https://ippu-biz.com/development/powerplatform/powerapps/link-dropdown-3/

  3. おやじ より:

    はじめまして。コメント失礼いたします。
    当方、モデル駆動型で開発を始めようと考えておりまして、同様のことを実現したいのですが、
    モデル駆動型アプリでの実現方法はありませんでしょうか?
    もしわかればご教示いただけると助かります!よろしくお願いいたします。

    • ふう より:

      おやじさん

      はじめまして、コメントありがとうございます!

      モデル駆動型アプリでドロップダウンを連動させたいとのお話しですが、
      「あるテーブルとあるテーブルがリレーションで結びついていて、親テーブルの値を選ぶと子テーブルの値をフィルターできる」
      みたいなイメージでお間違いないでしょうか?

      回答が少し長くなってしまいそうだったので、こちらに新しい記事を書きました。
      https://ippu-biz.com/development/powerplatform/powerapps/mda/link-dropdown-mda/

      もし実現したいことのイメージが異なりましたら、お手数ですが再度コメントを頂ければと思います^ ^

      • おやじ より:

        ふうさん

        早速の返信ありがとうございます!!
        また当方からの返信が遅くなり申し訳ございません。
        記事を参照させていただき、実装チャレンジしてみます。
        実際に試してみてまたコメントフィードバックさせていただきます。
        まずはお礼まで。

      • おやじ より:

        ふうさん
        こんにちは!
        ありがとうございます。ちょっと時間がかかってしまいましたが、実装できました!
        まさに実願したいことができました!

        • ふう より:

          おやじさん
          こんにちは!

          無事、記事がお役に立てたようで何よりです!
          また何かありましたら、コメントいただければと思います^ ^

  4. ココ より:

    はじめまして、コメント失礼いたします。とてもわかりやすい情報をありがとうございます!
    こちら参考にドロップダウンに連動した項目でPowerAppsに組み込むことができました。

    が、SharePointにデータを返すと、以下の(※)ように、連動したはずの項目がなぜか親情報に書き換わってしまいます…
    【PowerApps側】
     ・項目1:SharePointのリストAを表示
     ・項目2:SharePointのリストAに連動したリストBを表示
     →SharePointのデータ②に書き込む

    【SharePoint側】
    データ①…リストA・Bの情報を保持
    データ②…PowerAppsの入力情報を保管
     ・項目1:リストAのいずれかを表示
     ・項目2:項目1で選択したリストAがそのまま表示される(※)

    なにか原因がお分かりになれば教えていただけると嬉しいです。

    • ふう より:

      ココさん

      はじめまして、そしてコメントありがとうございます!

      早速ですがお問い合わせの内容を拝見しましたところ、PowerApps側でSharePointのリストにデータ(データ2の項目2)を書き込むところに原因がありそうな気がします。

      そこで、PowerApps側でSharePointのリストにデータを書き込む際、
       ・フォームコントロールを使用している場合:項目2を表示しているDataCardのUpdateプロパティに
       ・Patch関数を使用している場合:Patch関数の引数に
      原因があるのではないか、と思います。

      直接ソースを見たわけではないので確実なことが言えず申し訳ありませんが、ぜひ上記をご確認いただければと思います^ ^

  5. あーる より:

    はじめまして、コメント失礼いたします。
    こちらを参考にドロップダウンリストを作成しました。
    今年に入ってからPowerAppsに追加したメンバーの一人から該当のドロップダウンリストが選択できないと言われました。(該当のメンバーは22年11月時点では選択して、情報の登録まで可能でした)
    確認してみると該当のメンバーの画面を見ると選択肢が表示されておらず、何も動作しませんでした。
    メンバー登録がダメなのかと思い、共同所有者にしてみても同じく何も動作しません。

    別の共同所有者の方に試してもらうt問題なく、選択肢が表示され、動作も問題なく行えることが確認できております。
    何か権限等がついていないからなど考えられることはございますでしょうか。
    Sharepointのメンバーにも追加しないといけないのでしょうか。

    • ふう より:

      コメントありがとうございます!
      ご質問への回答ですが、ドロップダウンに表示するデータをどのデータソースから取得しているかによると思います。
      もしドロップダウンに表示する内容をSPOリストから取得しているのであれば、そちらの権限を確認してみる必要があるかと思います。

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