4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Power Apps でソートする列を切り替える

Last updated at Posted at 2025-01-31

はじめに

Power Apps のギャラリーでデータを表示する際に並び替え (ソート) をしたいことがあると思います。また、その際、ソートする列を切り替えたいということがあると思います。
今回はそのようなアプローチについて紹介します。

image.png

アプローチ

まず、アイコンとラベルをグループ化した部品をソートしたい列ごとに作ります。

image.png

※もちろん、コンテナーで実装してもよいです

次に、[OnSelect]プロパティを以下のように設定します。gblSortColumn はソート対象の列を格納する変数です。gblSortOrder は true と false を切り替える変数です。

image.png

Set(gblSortColumn,"Title");
Set(gblSortOrder,!gblSortOrder)
Set(gblSortOrder,!gblSortOrder)

の部分は以下と同じ意味になります。上の書き方の方がすっきりしています。

If(
    gblSortOrder = true,
    Set(
        gblSortOrder,
        false
    ),
    Set(
        gblSortOrder,
        true
    )
)

そして、ギャラリーの[Items]プロパティを以下のように設定します。

image.png

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
        )
)

image.png

なお、フィルターをする際は、SortByColumns より内側で Filter 関数を利用します。

image.png

まとめ

今回は、Power Apps のギャラリーでデータを表示する際にソートする列を切り替える方法を紹介しました。同じようなことを実装したい方にとって参考になれば幸いです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?