Power Apps コレクション 動的に連番コレクションを作成する
コレクションをPower Appsのみ で動的に作成したい場合に使える例をひとつ。
今回挙げるのはループ処理でコレクションを追加していく方法です。
コールバック的に使えるSliderを用意する
Power Apps はループ処理系に弱いです。for eachとかfor文とかも使えません。
何度も同じ処理をさせたい場合、タイマーコントロールまたはスライダーコントロールを使用すると実現させることができます。
今回はスライダーを使用してみます。
スライダーを設置しSlider.Valueに適当な変数を指定します。
Slider.Value
SliderValue
※変数は事前にOnVisibleなどで初期化しておく必要があります。
Slider.OnChangeで変数の値を変更する
Slider.OnChange
UpdateContext({SliderValue:SliderValue+1})
このようにすると、無限にOnChangeの処理が実行されるようになります。
Slider.OnChangeでコレクションに追加する
処理がループで実行されるようになったので、ここでコレクションに追加していきます。
Slider.OnChange
Collect(colItems,{Index:SliderValue});
UpdateContext({SliderValue:SliderValue+1});
指定した回数で処理をやめる
このままでは無限に実行されてしまうので、条件分岐で変数を変更しない分岐を作ります。
Slider.OnChange
Collect(colItems,{Index:SliderValue});
If(
SliderValue < 10,
UpdateContext({SliderValue:SliderValue+1})
)
上記の例では固定値の10を用いていますが、スライダーやドロップダウンで選択した値を参照させ、ユーザが選択した任意の数字を渡すことも可能です。
処理を発火する
処理を発火するには、Sliderコントロールのリセットを行います。
Screen.OnVisible
Reset(Slider)
これでコレクションを動的に作成することができます。
スライダーのループ処理については下記のリンクを参考にさせていただきました!
参考URL
【#PowerApps】PowerAppsでタイマーコントロールを使わずにタイマーコントロールよりも高速なループを実行する方法