Power Apps カスタムコンポーネントの入力プロパティでDataverseの選択肢を渡す|SharePoint版も

カスタムコンポーネントの入力プロパティでDataverseの選択肢列(OptionSetValue)を渡す方法がわからなかったのでメモ。

スポンサーリンク

やりたいこと

こんな選択肢型を持つテーブルがあって、
この選択肢列をカスタムコンポーネントの入力プロパティで指定できるようにしたいときの話。
例として、コンポーネント内のギャラリーで入力プロパティを使ってフィルター(画像の赤枠部分を入力プロパティで指定)する方法を考えてみる。

まずコンポーネントの入力プロパティを「レコード型」にして選択肢を指定してみたんだけど、どうやらDataverseの選択肢列の値(OptionSetValue)はレコード型じゃないらしくエラーが発生。
じゃあ「数値型」なら、と思ったけどこれもダメ。
「テーブル型」もダメで、
最終的に「テキスト型」ならいけたんだけど、
当然ながらテキスト型だとフィルターが動作しない。。

ということで色々試行錯誤してみた。

方法1 : ドロップダウンをかませる

1つ目がドロップダウンをかませる方法。

こんな感じでカスタムコンポーネント内にドロップダウンを入れて、ItemsにChoices(選択肢)を、Defaultにさっき作成したテキスト型の入力プロパティ(ねこ種)を設定。
そしたらギャラリーのフィルターにこのドロップダウンのSelected.Valueを設定して、
Visibleをfalseにしてあげれば、
こんな感じで呼び出す画面側でDataverseの選択肢を渡せばフィルターができるようになる。

方法2 : オブジェクトに詰めて渡す

2つ目がオブジェクトに詰めて渡しちゃう方法。

入力プロパティを「レコード型」にして、「{Value:選択肢}」と書いてValue列に選択肢の値が入るように設定。

※First(Choices(選択肢))でもOK

そしたらギャラリーのフィルターをこんな感じで書いて、オブジェクトの中の選択肢の値を見るように設定。
あとは呼び出す画面側をこんな感じで書いてあげれば、選択肢を渡してフィルターできるようになる。

ということで今のところは見つかった方法は2つ。

DataverseのOptionSetValueって何型なんだろ。。。

おまけ:SPOの選択肢列で同じことをしたい場合

こんな感じでSPOの選択肢列があって同じことをしたい場合、
SPOの選択肢列は「レコード型」なので、入力プロパティを「レコード型」にしてしまって、
ギャラリーのフィルターをこんな感じで書いてあげれば、
画面側から指定することができる。
※この場合はコンボボックスもコンポーネントに入れちゃった方が早いけど。。

コメント

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