IT工房くまや

通称くまが運営するIT工房サイト

PowerApps Patchを触ってみました

PowerAppsでJSONデータをテーブルにして、レコードの内容を変更して、テーブルに反映させる。

まずはJSONの簡単なサンプルを変数_JSONtextにセットします。

Set(_JSONtext,"[{""A"": ""A1""},{""A"": ""A2""}]")

ParseJSON関数を使いコレクション_tableにセットします。この時ClearCollectionを使うのが味噌です。Patch関数の第一引数はコレクションなので、単純にSet関数を使ってしまうと、_tableを参照できませんでした。

ClearCollect(_table,ForAll(ParseJSON(TextBoxJSONSample.Value),{A:Text(ThisRecord.A)}))

_tableをGallary1のItemsにセットします。

Gallary1でレコードをSelectされたらレコードの内容を反映させるFormを作成します。FormのDataSourceに_tableをセット、ItemにGallary1.Selectedをセット、DataCardを追加し、その中にTextBox2をセットし、ValueにThisItem.Aをセットします。これでGallary1で選択したレコードのAがTextBox2に表示されます。

TextBos2の内容を変更し、その変更を_tableに反映させるのにPatch関数を使います。

Patch(_table,First(Filter(_table,A = Gallery1.Selected.A)),{A: TextBox2.Value})

この第二引数First(Filter(_table,A = Gallery1.Selected.A))でわかるように、レコードを特定する必要があります。JSONデータを作成するときには重複しないデータをもつプロパティを設定する必要があります。

コレクションをJSONデータにします。

Set(_JSONtext,JSON(_table))