Power Apps カスタムコンポーネントやギャラリー内のコントロールの一括リセット|Resetプロパティについて

ギャラリー内のコントロールを一括する方法を調べたので、その方法をメモ。

スポンサーリンク

Reset関数

まず普通に画面に配置されたコントロールをリセット(デフォルトの状態に戻す)ときには「Reset関数」を使用する。

例えばこんなテキストボックスがあって、
ユーザーがアプリを操作して変更したテキストをリセットしたいときは、こんな感じでReset関数を呼んであげれば、
テキストがデフォルトに戻る。

ギャラリー内のコントロールは外からリセットできない

ただこんな感じでギャラリーに入っているコントロールに対して、
ギャラリーの外からReset関数を呼ぶと、
「リセットできません」エラーが表示される。
ということでギャラリーの中にボタンを入れてReset関数を呼んでやると、
ボタンを押したアイテムのコントロールだけがリセットされる。

これはこれで便利だけど、この方法だとギャラリー内の全部のコントロールをリセットすることができない。

ギャラリー内のコントロールを外側から一括リセットする

ギャラリー内のコントロールを一括リセットする場合は、そのコントロールのResetプロパティを使用する。
このResetプロパティは、値が「true」になったときにそのコントロールをリセットしてくれる、というプロパティ。

そこでこんな感じでBool型の変数を宣言し、「true→false」と更新する処理を書いてあげて、
その変数をコントロールのResetプロパティに入れてあげれば、
ボタンを押したときにこんな感じで一括でリセットしてくれる。

カスタムコンポーネント内のコントロールのリセット

続いてカスタムコンポーネント内のコントロールをアプリからリセットしたいとき。

こんな感じでカスタムコンポーネントのOnReset関数内で各コントロールをReset関数で呼ぶようにして、
アプリからReset関数で対象のカスタムコンポーネントを指定してあげれば、
無事リセットされる。

カスタムコンポーネント内のギャラリー内のコントロールをリセットする

最後はこんな感じのカスタムコンポーネント内のギャラリー内のコントロールをリセットする場合。

方法1:カスタムコンポーネント内の変数を利用する

1つ目はカスタムコンポーネント内の変数を利用する方法。

こんな感じでカスタムコンポーネントのOnReset関数でbool型の変数を宣言、更新してあげるようにして、
この変数をリセットしたいコントロールのResetプロパティに入れてあげる。
そしたらアプリからReset関数で対象のコンポーネントを呼んであげれば、
一括リセットされる。

この方法でも全然問題なく動作するんだけど、もしこのコンポーネントの「アクセスアプリスコープ」を「オン」にしなきゃいけなくなったとき、この変数は「グローバル変数」になってしまうため、アプリに配置したすべてのこのカスタムコンポーネントに影響を与えてしまう

そこで「アクセスアプリスコープ」をオンにする可能性がある場合は、次の方法がよいかと。

方法2:カスタムコンポーネントに入力プロパティを実装する

2つ目の方法はこんな感じでカスタムコンポーネントにbool型入力プロパティを実装して、
その入力プロパティをリセットしたいコントロールのResetプロパティに入れる。
あとはアプリ側で変数を宣言→更新するようにして、
その変数を作成した入力プロパティにバインドしてあげれば、
こんな感じで一括リセットができる。

こちらの方法だとアクセスアプリスコープをオンにしても、アプリ側で変数の使い方を間違わない限り、他に配置した同じカスタムコンポーネントには影響を与えない。

ただ、この方法だとアプリ側で扱う変数が増えてしまうので、アクセスアプリスコープをオンにすることが絶対にない場合は1つ目の方法もありかと。

関連記事

参考公式

コメント

タイトルとURLをコピーしました