3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【PowerApps】ギャラリーに行番号を付けてボタンで選択行を操作する方法

Posted at

ギャラリーの選択に合わせて、詳細を並べて表示し、選択アイテムを次々切り替えながら確認する際は、ギャラリーでアイテムを選択していくよりも、ボタンで上下移動できたほうが便利な場合があります。

動画でも解説しました

気に入ったら高評価・チャンネル登録お願いします。

用意したリスト

testlist1.png

ギャラリーに行番号を付ける

ギャラリーのItemsプロパティに以下

With({_list: test_list1},
    ForAll(Sequence(CountRows(_list)),//リストの行数分繰り返し
        Patch(Index(_list, Value),{Row:Value})//現在行の番号をRow列に追加
    )
)

これで行番号としてRow列が追加されます。
image.png
この右側のボタンのOnSelectプロパティに選択行を移動する数式を入れていきます。

最初の行を選択する

ボタンのOnSelectプロパティに以下

Select(Gallery1,1)

Select関数は画面内のコントロールを選択する関数ですが、
対象がギャラリーの場合は第2引数に数字を入れることでその行を選択することができます。

最後の行を選択する

ボタンのOnSelectプロパティに以下

Select(Gallery1,Gallery1.AllItemsCount)

第2引数にギャラリーの全行数を入れることで、最後の行を選択することができます。

現在の選択行から上に移動

現在の選択行を取得するために、はじめに追加したRowの値を活用します。
ボタンのOnSelectプロパティに以下

With({_selectrow:Gallery1.Selected.Row - 1},//現在行より1少ない番号を設定
    If(_selectrow > 0,                        //0より大きい場合のみ実行
    Select(Gallery1,_selectrow))            //設定した行番号を選択
)

現在行を取得して、-1することで目的の行番号を取得します。
Select関数でエラーにならないように、目的の行が0より大きい場合のみ実行

現在の選択行から下に移動

With({_selectrow:Gallery1.Selected.Row + 1},//現在行より1多い番号を設定
    If(_selectrow <= Gallery1.AllItemsCount,//ギャラリーの最大行数より少ない場合のみ実行
        Select(Gallery1,_selectrow)         //設定した行番号を選択
    )
)

上に移動する場合とほぼ同じで、現在行に+1しています。
If文も最大行数と同じか小さい場合のみ実行して、エラーを回避しています。

10行移動する

先ほど+1・-1した箇所の数字を大きくすれば、その数値の行数分移動することが可能です。

##注意
今回紹介した方法は、ギャラリーの順序を並び替えない前提です。
どうしても並び替える場合は、行番号を付け直すなどの対策が必要ですね。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?