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))