はじめに
Power Apps のギャラリーでデータを表示する際に並び替え (ソート) をしたいことがあると思います。また、その際、ソートする列を切り替えたいということがあると思います。
今回はそのようなアプローチについて紹介します。
アプローチ
まず、アイコンとラベルをグループ化した部品をソートしたい列ごとに作ります。
※もちろん、コンテナーで実装してもよいです
次に、[OnSelect]
プロパティを以下のように設定します。gblSortColumn はソート対象の列を格納する変数です。gblSortOrder は true と false を切り替える変数です。
Set(gblSortColumn,"Title");
Set(gblSortOrder,!gblSortOrder)
Set(gblSortOrder,!gblSortOrder)
の部分は以下と同じ意味になります。上の書き方の方がすっきりしています。
If(
gblSortOrder = true,
Set(
gblSortOrder,
false
),
Set(
gblSortOrder,
true
)
)
そして、ギャラリーの[Items]
プロパティを以下のように設定します。
Switch(
gblSortColumn,
"Title",
SortByColumns(
'問題追跡 益森 20250108',
"Title",
If(
gblSortOrder,
SortOrder.Ascending,
SortOrder.Descending
)
),
"DateReported",
SortByColumns(
'問題追跡 益森 20250108',
"DateReported",
If(
gblSortOrder,
SortOrder.Ascending,
SortOrder.Descending
)
)
)
以下の方がすっきりしているのですが、この場合、委任の警告が出ちゃうため、Switch 文にしました。
SortByColumns(
'問題追跡 益森 20250108',
gblSortColumn,
If(
gblSortOrder,
SortOrder.Ascending,
SortOrder.Descending
)
)
なお、フィルターをする際は、SortByColumns より内側で Filter 関数を利用します。
まとめ
今回は、Power Apps のギャラリーでデータを表示する際にソートする列を切り替える方法を紹介しました。同じようなことを実装したい方にとって参考になれば幸いです。