前回に引き続きPowerAppsアプリにてギャラリーコントロール内にチェックボックスコントロールを実装した際にチェックの挙動が上手くいかない部分がありましたのでその解決方法について紹介させていただきます。
■ギャラリーコントロール内へのチェックボックスコントロール実装について
以下のアプリは1日のスケジュールをギャラリーコントロールで一覧表示するアプリです。ギャラリーコントロール内にチェックボックスを配置し、チェックしてタスクを完了させるといった動作を想定しています。

ギャラリーに表示しているデータは以下のコレクションであり、図1のサンプルアプリでは「データ設定」ボタンコントロールのOnSelectプロパティに以下のコードを設定しています。(検証されたい方はコードをコピーして実際に確認していただけたらと思います。)
//「データ設定」ボタンOnSelectプロパティ
ClearCollect(ColTestData,
{時間:”6:00″,活動:”起床”},
{時間:”7:00″,活動:”朝食”},
{時間:”8:00″,活動:”出勤”},
{時間:”12:00″,活動:”昼食”},
{時間:”15:00″,活動:”休憩”},
{時間:”18:00″,活動:”帰宅”}
)
図2:ギャラリー表示用コレクション設定
データ設定後、ギャラリー内に表示されたチェックボックスを順番にチェックするとそれまでチェックしていたものすべてのチェックが外れて初期化されてしまう場合があります。一つの解決方法としてギャラリー表示用コレクション内のチェックボックスコントロールのステータスを持たせることで回避ができます。
//「データ設定」ボタンOnSelectプロパティ
ClearCollect(ColTestData,
{時間:”6:00″,活動:”起床”,ステータス:false,ID:1},
{時間:”7:00″,活動:”朝食”,ステータス:false,ID:2},
{時間:”8:00″,活動:”出勤”,ステータス:false,ID:3},
{時間:”12:00″,活動:”昼食”,ステータス:false,ID:4},
{時間:”15:00″,活動:”休憩”,ステータス:false,ID:5},
{時間:”18:00″,活動:”帰宅”,ステータス:false,ID:6}
)
図3:ギャラリー表示用コレクション(チェックボックスステータス設定)
また、チェックボックスコントロールのプロパティにそれぞれ以下のコードを設定します。
//CheckboxコントロールOnCheckプロパティ
//チェックした際にステータスを“true”に更新
UpdateIf(ColTestData,ID= ThisItem.ID,{ステータス:true})
図4:CheckboxコントロールOnCheckプロパティ
//CheckboxコントロールOnUnCheckプロパティ
//チェックした際にステータスを“false”に更新
UpdateIf(ColTestData,ID= ThisItem.ID,{ステータス:false})
図5:CheckboxコントロールOnUncheckプロパティ
//CheckboxコントロールDefaultプロパティ
ThisItem.ステータス
図6: CheckboxコントロールDefaultプロパティ
チェックボックスコントロールの各プロパティ概要は以下となります。
- Oncheckプロパティ
チェックボックスコントロールにチェックを入れた際に動作させるプロパティ
- UnOncheckプロパティ
チェックボックスコントロールにチェックを外した際に動作させるプロパティ
- Defaultプロパティ
チェックボックスコントロールの初期状態を設定するプロパティ(trueもしくはfalse)
図4、図5ではチェックした際と外した際にコレクションに設定した“ステータス”を更新するコードです。図6はコレクション内のステータスをチェックボックスコントロールの初期値として設定するコードとなります。
明示的チェックボックスコントロールのステータスを定義することでギャラリー内でのチェックボックスコントロールの不安定な動作を回避することができます。
今回はギャラリー内のチェックボックスコントロールの実装のポイントについて紹介させていただきました。コラム内にコードサンプルを記載しておりますので試してみていただけたらと思います。

技術とノウハウでデジタルシフトをサポート
中小企業の頼れるパートナー
執筆者: 村瀬 俊昭(株式会社クロスディーズ システム技術統括エンジニア)
前職では社内システムの運用、サーバーの監視、システム運用業務の構築、システム開発業務といった業務に幅広く携わる。2021年より株式会社佐々木総研にてロボットの設計・開発、社内SEとして従事している。釣りが趣味で、大のビール好き。