以前書いた『2つのドロップダウンを連動させる』という記事に、「3つの連動させる場合はどうするのか?」というコメントを頂いたので、3つの選択肢の連動をやってみた。

準備


選択肢1を選ぶと選択肢2が決まり、選択肢2を選ぶと選択肢3が決まるイメージ。
例えば、選択肢1で「a」を選ぶと選択肢2で「aa,ab,ac」が出て、選択肢2で「ab」を選ぶと選択肢3で「aba,abb,abc」が選べるイメージ。
カスタムフォーム作成


テキストボックスからドロップダウンへの変更
続いて、前回と同様に選択肢1~3をテキストボックスからドロップダウンへ変更。

データの入ったリストとつなぐ
こちらも前回と同様データの入ったSharePointリストと、このフォームをつなげる。


選択肢1の内容を表示する
※ここで全部のDataCardのロックを解除しちゃうと後ほど楽!

Distinct([データリストの名前], [表示したい列の名前])
と入力する。


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

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


ここまでは前回と全く同様の手順。
選択肢2の重複もなくしてあげる

そこで、この選択肢2のItemsにもDistinct関数を適用する。
Filter([リスト名], Title = [選択肢1のドロップダウン名].Selected.Result)
になっていると思うので、
Distinct(Filter([リスト名], Title = [選択肢1のドロップダウン名].Selected.Result),[選択肢2に表示したい列名])
こんな感じで変更する。


選択肢2のDataCardのUpdate関数でもエラーが出ると思うので、選択肢1と同様Resultプロパティを指定してエラーを消す。
選択肢3の内容を表示する
選択肢3は選択肢2と同じ手順でいける。
- 親コントロール:選択肢2のDataCard内のドロップダウンを指定
- 一致するフィールド:「データリスト名」と「選択肢2の列名」を指定



※選択肢3にはDistinct関数を使っていないので、Resultではなく選択肢3に表示するリストの列名を指定するのに注意!


2021/2/22追記:選択肢に重複がある場合の対応
※佐藤徹さんからコメントを頂き、この考慮漏れに気が付くことができました。



Filter([SPOリスト名], Title = [選択肢1のドロップダウン名].Selected.Result && Value1 = [選択肢2のドロップダウン名].Selected.Result)


コメント
タイトル=b、Value1=aaの要素があっても正しく表示されるのでしょうか?
佐藤 徹さん
初めまして、コメントありがとうございます!
ご指摘いただいた通り、選択肢に重複がある場合の考慮が漏れておりました。。。
そこで今回、ご指摘いただいた内容を踏まえて記事を更新しました。
コメント本当にありがとうございました!!
初めまして。突然のコメント失礼します。
ドロップダウンを5つ程度連動させたいと考えています。
記事の通りに3つ目まで設定し、4つ目のドロップダウンにも同じように設定をしようとしたところ、
4つ目のドロップダウンの依存先の親コントロールの2つ目の項目が「Result」ではなく、「ID」が選択されました。
ドロップダウン3つ目までは「Result」以外選ぶことが出来なかったのですが、私の設定がおかしいのでしょうか。
Nasachi様
コメントありがとうございます!
私の方でも試してみたのですが「Result」を選ぶことができました。。。
実装を見てみないと何とも言えないのですが、記事の内容では3つ目のドロップダウンのItemsにDistinct関数を使用していないため、「Result」ではなく「Value2(SPOの列名)」を使っています。
この辺りが関係してそうかなと思います。
ご参考になれば幸いです。