ギャラリーコントロールのItemをランダム表示する方法に関しての共有です。
私は非ITエンジニアの市民開発者なので、おそらく難しい言葉を使ってないと(自分では)思っているので気軽に読んで頂ければと思います。
その上でどなたかのお役に立てば幸いです。
1. 環境
手元に下記のようなShareppoint List, PowerApps(キャンバス)がある状況とします。
で、画面左側のギャラリーコントロールの並び順をランダムにしたいとします。
Sharepoint List (データソース名 "DummyDB")
PowerApps (上記SharepointListを元に生成したものに少し手を加えたもの)
・機能:左側カラム上部の「検索」にワード入れると人がソートされ、選択されたアイテムの詳細が画面の右側に表示されるApps。人材管理や資産管理などに使える想定。
...この機能で利用するのは黄色でハイライトしたボタンコントロールとギャラリーコントロールのみです。
2. 実例
このサンプルの場合ではそれぞれのコントロールで下記の設定がなされてます。
これで"Random"のボタン押すとギャラリーコントロールの表示順がランダムになります。
以降の段落で詳細の解説します。
ボタンコントロールの設定
※"Shuffled"はコレクション名、"DummyDB"はSharepoint List名
ギャラリーコントロールの設定
※"SearchInput"は検索ボックスに使ってるテキスト入力コントロール名
※"Title", "emailAddress"はSharepoint Listのカラム名
3. 解説 - ボタンコントロールのOnSelectプロパティ
少し一般化して書くと下記のように設定するとOKです。
OnSelect = ClearCollect('コレクション名', Shuffle('データソースのSharepoint List名'))
-
ClaerCollect関数:
-
機能:指定したコレクションのデータを削除し新規データをコレクションに追加する
- コレクション:テーブル型の値を格納する変数(ClearCollect関数で生成されます)
- 実例中では"Shuffled"がコレクションです
- コレクション:テーブル型の値を格納する変数(ClearCollect関数で生成されます)
- 基本構文:下記
-
機能:指定したコレクションのデータを削除し新規データをコレクションに追加する
ClearCollect('空にして更新するコレクション', 'コレクションに入れるデータ(Sharepoint List)')
-
Shuffle関数:
- 機能: テーブル型のデータの並び順をランダムにシャッフルする
- 基本構文:下記
Shuffle('データソースのSharepoint List名')
4. 解説 - ギャラリーコントロールのItemsプロパティ
こちらも少し一般化して書くと下記のように設定するとOKです。
簡単にまとめるとコレクションが空ならSharepoint Listのままで表示、そうでなければコレクションを表示ということをしています。
Items = If(IsEmpty('コレクション名'), Search('データソースのSharepoint List', '検索用テキスト入力コントロール名'.Text, 検索対象カラム1, 検索対象カラム2), Search('コレクション名', '検索用テキスト入力コントロール'.Text, 検索対象カラム1, 検索対象カラム1))
-
IsEmpty関数 (≠ IsBlank関数)
- 機能:コレクションが空かを判断する。空ならTrue、そうでなければFalse。
- 補足:IsBlankは"値"に対する判断、IsEmptyは"テーブル"に対する判断で別物です。
- 基本構文:下記
IsEmpty('データソースのSharepoint List名')
-
Search関数
- 機能:データソースをフィルタする
- 基本構文:下記
Search('データソースのSharepoint List','検索ボックスのTextプロパティ','検索対象カラム1','検索対象カラム2'...)
5.おわりに
こんな感じでした。どなたかのお役に立てば幸いです。
ちなみにランダム表示した後にアルファベット順に戻す場合にはSortByColumns関数を組み合わせればできます。余裕があれば別途記事を作るかもしれません。