ThisItemについて

ホーム フォーラム Power Apps アプリの作り方 ThisItemについて

5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #4159
    Fumio Nakamura
    参加者
    Up
    1
    Down
    ::

    フォーラム開設おめでとうございます。
    一番乗りみたいで、嬉しいような、恥ずかしいような。
    早速ですが、タイトルの件で質問させてください。

    【疑問点】
    ギャラリーにコンボボックスを載せて、
    そのコンボのonChangeイベントで、
    ギャラリー名.Selected.’(バインドしているデータソースの)列名’
    では動作しなかったものが、
    ThisItem.列名
    と書き換えると動くようになりました。
    これはどういう理由(可能性)なのでしょうか?

    簡単なアプリは適当な理解でもソコソコのものが作れましたが、
    規模がある程度になってくると、そうもいかないようです。

    https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/functions/operators#thisitem-operator
    も読んではみましたが、私にはこれだけではわかりませんでした。

    どなたか解説いただけるとありがたいです。

    #4160
    Hiro #PowerAddict
    キーマスター
    Up
    0
    Down
    ::

    こんにちはNakamuraさん
    「Gallery.Selected.列名で動作しなかった」というのはどういった結果だったのでしょうか?onChangeが発火しなかった/期待と異なる結果が得られた でしょうか?

    ThisItemはギャラリーの場合、Galleryのitemsプロパティに設定されたテーブルの各行を指します。
    「このレコードの」と読み換えるとしっくりくるかもしれません。
    一方でGallery.Selectedは、「ギャラリーで選択されたレコードの」になります。
    例えばGallery.Selectedを使うなら明示的にそのレコードを選択すれば良いかと思います。
    onSelectにSelect(Parent)と入れてみるとうまく動くかもです。

    #4161
    Mina
    キーマスター
    Up
    0
    Down
    ::

    Nakamuraさん、こんにちは!
    ThisItemとParentというキーワードが出てきたので、もしそれらをわかりやすく理解されたいのでしたら、こちらの記事がおすすめです。

    PowerApps の特殊なシンボル Parent と ThisItem を知っておく

    ご参考になれば幸いです!

    #4177
    MakotoMaeda
    参加者
    Up
    2
    Down
    ::

    ご質問ありがとうございます!一番乗りいいですね!

    考え方的には、ThisItem.でやるのが最適解と思います。私ならそうします。
    Selectedでもイメージ的におんなじじゃんと私も思いますが、多分王道はThisItemの方かなと。感覚的に。(仮にうまく動いていたとしても)

    Selectedでできない理由は正しい使い方をしていないのと、ギャラリーのOnSelectやらコンボボックスのOnSelectやらSelectedの切り替えの処理やらが干渉してうまくいかないんじゃないかと。そういう仕様なんだと思います。
    ご質問の場合でしたらThisItemを使用するのが100%正しいと思います。

    あと、最初に早とちりしてThisItemとSelectedの違いをふわっと書いてしまったのでついでに載せときますね・・・

    ——————————-おまけ–ThisItemとSelectedの違い———————————–

    まずギャラリーコントロールにはItemsプロパティを設定して、表示するテーブルを指定しますよね。
    つまり、ギャラリーは”Item”がいっぱい詰まってるわけです。Itemsですから。

    1行目の”Item”
    2行目の”Item”
    3行目の”Item”
    とあるわけですね。

    ThisItemについてですが、この1行目2行目3行目それぞれが”俺のItem”を見ているんですね。

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

    Selectedプロパティはそのまま、「そのギャラリーコントロールで選択された項目」を指すものです。
    これはイベントではなく、最後にクリックしたものがずっと参照されています。

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

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

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

    #4180
    Fumio Nakamura
    参加者
    Up
    0
    Down
    ::

    皆様、ご回答ありがとうございました。
    返事が遅くなりすみませんでした。

    症状としては、MakotoMaedaさんが少し触れられていたように、環境,負荷、アプリ規模等でスピードが緩慢になってきた場合に、(見た感じでは)再描画が発生したりしているようで、余計なイベントを拾って誤動作や無限ループに陥る場合がありました。これらをThisItemに記述を変えただけで症状が治まりましたので、その理由は?と思って投稿させていただいた次第です。
    参考記事や細く解説もいただき、参考になりました。
    これからもよろしくお願いします。

5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • トピック「ThisItemについて」には新しい返信をつけることはできません。
ツールバーへスキップ