おしえてあきらくん!その3(Gallery内ControlのReset)

こんばんは、変態です。

今回はReset関数です。

 

Reset関数とは

Reset関数は日本語で言うと、

「あるコントロールの値を規定値に戻す」

ときに使います。

 

例えば以下のようなcontrolを配置して、buttonを押すと

f:id:hanakuso365:20210430230218p:plain

 

こんな感じでtextinputcontrolの値がResetされます。f:id:hanakuso365:20210430230551g:plain


こんなResetどうやるん?

ここで、おばちゃんから質問あったんですが、

「Galleryの中のテキストインプットの中をResetしたい場合どうしたらいいの?」

って言われまして。

 

確かに複数を一括登録したい場合は、あり得る導線だなーと思ったわけですね。

だけど、やったことないなーと思って色々手段検討してみた。

失敗例1

「そのまんまcontrol名呼んだら行けんじゃね?」

→失敗

 

まぁ当たり前ですね。

Reset function - Power Apps | Microsoft Docs 

こちらによれば、
「ギャラリー内にあるコントロールをリセットしたり、フォームコントロールを編集したりすることはできない。同じギャラリーまたはフォーム内のコントロールの数式からコントロールをリセットできる。」

みたいなことが書かれてるので、

簡単に言うと「ReserしたけりゃGallery内で操作しやがれ」ってことです。

失敗例2

「よし!じゃあGalleryごとResetすればいけんじゃね?」

→失敗(なめんな)

 

当たり前にもほどがある、control指定してない。

 

ってことで、次の二つも試してみた

①ForAll(任意のGallery.Allitem,Reset(コントロール名))

→エラーは出ないけどResetはされない

②Reset(任意のGallery.Allitem.コントロール名)

→エラー

 

ここらへんで、

(え?結構テクニカルなことしなきゃできないんじゃね?)

って思い始めてきた。

成功例

はい、割とあっさり解決した。

まず、任意Gallery内にある、今回は任意テキストインプットのプロパティ内の

Resetプロパティに変数を仕込みます。今回はResetTextとします。

f:id:hanakuso365:20210430232426p:plain

そしたら、テキトーにボタン配置してあげて、この変数をtrueにしてあげるとReset!ってなります。

ここで注意しなきゃいけないのが、そもそもResetプロパティの値が「true」ならば、「true」にする!ってなってもResetされません。

検証してみたけどどうやら、

Resetプロパティの値がfalse→trueに切り替わった時に、値がResetされるようで、

逆に言うと、trueにしたらまたfalseに直してあげないと、一度Resetされたらアプリをリロードしないと切り替えができなくなる、ってわけですね。

なのでbuttonのOnSelectに以下を仕込んでおわり!

UpdateContext({ResetText:true});UpdateContext({ResetText:false})

 

実装したのがコチラ

f:id:hanakuso365:20210430233852g:plain

 

 

おわりに

意外としらんことあるもんですね

調子にのってたぜデへへ

他の誰かも同じこと書いてそうですけど、

備忘録ってことと、おばちゃんへのメッセージと、解決までの時間短いぜ!すごいだろ!って自慢のために残しておこうと思います。