のいのログ

【Power Apps】ギャラリーの初期値(Default)を設定する方法

今回はPower Appsのギャラリーコントロールの初期値を変更する方法をご紹介します。

たとえば「ユーザーによって初期選択を変えたい」、「タブバーを再現したギャラリーで真ん中のアイテムをデフォルトにしたい」のような状況で使えます。

目次(クリックでジャンプできます)

Default未指定のときは最初のレコード

Defaultプロパティに何も入力していないときは、 Itemsに指定したテーブルの1番目のレコードになります。

つまり、垂直ギャラリーなら一番上、水平ギャラリーなら一番左が初期選択になります。

最初のレコード以外にしたいとき

最初のレコード以外にしたいときはDefaultプロパティにそのレコードを指定します。

Itemsが複数列テーブルの場合

例として、以下のようなギャラリーコントロールがあります。

ScreenのOnVisibleでMainTabBarItemsを定義し、ギャラリーのItemsに指定している

このギャラリーの初期値を中央の「ホーム」に設定する場合、Defaultプロパティを以下のようにします。

LookUp(MainTabBarItems, Text = "ホーム")

または

{ Text: "ホーム", Icon: Icon.Home }

Defaultを正しく動作させるにはすべて列が揃ったレコードが必要ですので、基本的にはLookUpIndexで検索した値を使用するのがいいでしょう。

Itemsが単一列テーブルの場合

今度はItemsを単一列テーブルにします。

このなかで「タイムライン」タブを初期値にしたい場合は、Defaultプロパティを以下に設定します。

LookUp(MainTabBarItems, Value = "タイムライン")

または

{ Value: "タイムライン" }

Valueは、[]で囲った単一列テーブルに自動的に付与される列名です。

また、テーブル値を必要とするタブ一覧やコンボボックスのDefaultSelectedItemsと違い、Defaultの場合は["タイムライン"]と書くと「レコードが必要です」とエラーになってしまいますので注意しましょう。

再表示時に自動的にDefaultに戻るようにしたいとき

このままだと一番最初にギャラリーが表示されるときは機能しますが、一旦別スクリーンに移動して再度戻ってきた場合には、前回の選択が残ってしまいます。

画面遷移後に選択をDefaultに戻したい場合は、ScreenのOnHiddenプロパティでギャラリーコントロールをリセットしましょう。

Screen.OnHidden
Reset(gal_TopTabBar)

ギャラリーのItemsに直接テーブルを入力している場合の注意点

ギャラリーのItemsプロパティは、変数やコレクションを指定できるほか、Itemsプロパティに直接テーブルを書くこともできます。

このとき、Self.AllItemsLookUpIndexで検索してレコードを指定しようとするとうまくいきません。

なぜなら、AllItemsプロパティはデータソースと、ギャラリーに配置したコントロールを足し合わせたテーブルになっているからです。

このまま使うと余計な列があるため、Itemのレコードと一致していない判定になります。しかも、コントロール以外の条件が一致するレコードはなぜか選択できなくなります。(バグ?)

これを回避するにはレコード自体をハードコード(直接書き込む)か、ShowColumnsまたはDropColumnsで必要な列だけに整形してやると表示できるようになります。

複数列テーブルならItemsの外でテーブルを作ったほうがいいかも

単一列テーブルなら{Value: "ホーム"}のようにハードコードしてしまってもいいと思います。

しかし、直接書く方法だと列数が増えると面倒ですし、何よりも変更に弱くなります。ShowColumnsRemoveColumnsも余計な演算が増えるだけです。

複数列テーブルの場合は、素直にSetUpdateContextで格納した変数を参照するようにしたほうがいいと思います。

おわりに

ギャラリーコントロールはよく使いますから、今回ご紹介した方法は覚えておいたほうが便利だと思います。

タブ一覧やコンボボックスのDefaultSelectedItemsプロパティの場合は少し違う仕様になっていますので、別途記事にしたいと思います。

シェアしていただけると嬉しいです!
  • URLをコピーしました!

この記事を書いた人

ローコード・RPAエンジニア。DX・業務効率化を専門に開発。

前職では鉄道運転士として働きながら、社内複業でSwift・Power Platformで業務効率化を推進していた。

コメント

コメントする

CAPTCHA


目次(クリックでジャンプできます)