Power Appsの使い方

Power AppsとPower Automateの使い方やできることがわかるブログを目指しています。

PowerApps ギャラリーのThisItem と Selected について

ギャラリーのThisItemとSelected、PowerApps特有のプロパティで引っかかりどころだと思います。

 

一応docsのページもありますけど、うーん。

https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/functions/operators#thisitem-operator

 

ThisItem自体はフォームでも用いますが、ここではわかりやすくするためにギャラリーのThisItemにフォーカスすることにします。

 

ThisItemについて

ギャラリーはItemsプロパティにテーブルを指定してデータ ソースの複数のレコードを表示できますが、このレコード=Itemになります。

 

1行目の”Item”
2行目の”Item”
3行目の”Item”

 

といった感じでデータが詰まっているわけです。それぞれ自分を指してThisItemと表しています。

 

1行目が”自分のItem”といったら1行目のデータを表しますし、
3行目が”自分のItem”といえば、3行目のデータを表すわけです。

 

selectedについて

Selectedプロパティはそのまま、「そのギャラリーコントロールで選択された項目」を指すものです。


これはイベントではなく、最後にクリックしたものがずっと参照されています。

これは1行目が見ても2行目が見ても変わらないですね。

 

最後に選んだのが3行目なら、1行目だろうが2行目だろうが3行目だろうが
“最後に選んだのは3行目だ!”となって、3行目のデータを参照してくれるわけです。

 

このように、ThisItemとSelectedは用途として明確に異なっています。

 

 こんがらがっている場合は実際に見てみると一目瞭然です。

実例

データソース
ClearCollect(
    colTest,
    {
        Title: "Item1",
        Number: 1
    },
    {
        Title: "Item2",
        Number: 2
    },
    {
        Title: "Item3",
        Number: 3
    }
)

表示テキスト
"ThisItem = "&ThisItem.Title
"Selected = "&Gallery1.Selected.Title

 

結果

 

f:id:botherntu:20190711015642p:plain

結果

 2行目のレコードを選択しているので、SelectedはすべてItem2を参照していますね。

 

あとがき

アプリで実現したいことや、実現方法によってはThisItemでもSelectedでも見た目上うまくいく場合があるかもしれません。ですが、どちらかといえばどっちを使うのが正しいかというのは意識できると、後々仕様変更されて泣きを見たりせず幸せになれると思います。

 

Power Apps / Power Automate の開発技術支援サービスや1日トレーニングコースを提供しています。

Power Apps や Power Automateに関する仕事のご依頼は下記ページからお問い合わせください。
ZEE CitizenDevSupport