Edit a customer record
In this section, you learn how to create a form using the component.form to display the fields returned from the dynamic data provider. Add an action.submit-form with a method: update that saves the changes to the record in the dynamic data provider.
Steps
Create a jig to edit data
Open the Hello-Jigx solution in Jigx Builder in VS Code, right-click on the jigs node in Explorer, and select New file.
Name the file edit-customer. Click on Default to open the skeleton YAML created by the Jigx Builder.
Give the jig a title called Edit customers and provide a description like Edit customer details.
Delete the
headerandonfocusnodes.
Add a datasource and form
You are going to use the same datasource, query, form, and form fields that you used in the view-customer.jigx file. Use the code below.
datasources:
customerInfo:
type: datasource.sqlite
options:
provider: DATA_PROVIDER_DYNAMIC
entities:
- default/customers
query: SELECT id, '$.firstName', '$.lastName', '$.email' FROM [default/customers] WHERE id = @custId
queryParameters:
custId: [email protected]
isDocument: true
children:
- type: component.form
instanceId: editCustomer
options:
children:
- type: component.field-row
options:
children:
- type: component.text-field
instanceId: firstName
options:
label: First Name
initialValue: [email protected]
- type: component.text-field
instanceId: lastName
options:
label: Last Name
initialValue: [email protected]
- type: component.text-field
instanceId: email
options:
label: Email
initialValue: [email protected] Add the submit-form action to save the data
A
submit-formaction is used to save the data from the text boxes to the SQLite database. Thesubmit formaction will automatically match theinstanceIdsof the controls on the jig and use theupdate methodto save the changes to the record in the local SQLite table with eachinstanceIdsas a property for the JSON object in the Data column. Use the submit.form action code below:
actions:
- children:
- type: action.submit-form
options:
formId: editCustomer
provider: DATA_PROVIDER_DYNAMIC
title: Save Customers
entity: default/customers
method: update
recordId: [email protected]
onSuccess:
type: action.go-back 2. Your edit-customer.jigx file should resemble the code below.
# The system name that uniquely identifies the jig
title: Edit Customer
# The jig type used to display data
type: jig.default
# The type of datasource used to store the edited data in the jig
datasources:
customerInfo:
type: datasource.sqlite
options:
# The data provider being used. In this case, the Jigx Dynamic Data provider, which is a built-in database using methods to work with the data.
provider: DATA_PROVIDER_DYNAMIC
# The name of the table that the information is being returned from. All Dynamic Data-based tables are saved in the "default" database.
entities:
- default/customers
# The SQLite query used to specifiy the data to return
query: SELECT id, '$.firstName', '$.lastName', '$.email' FROM [default/customers] WHERE id = @custId
queryParameters:
custId: [email protected]
isDocument: true
# The controls that will be displayed on the jig are defined under the children node on a default jig
children:
# All input controls are placed on a form component
- type: component.form
# A control is uniquely identified by its instance id
instanceId: editCustomer
options:
children:
# To display two controls next to each other, they are added as children of a field-row component
- type: component.field-row
options:
children:
# A text-field component is used to capture or update text information on a form. In this case the value is returned from the database
- type: component.text-field
instanceId: firstName
options:
label: First Name
initialValue: [email protected]
- type: component.text-field
instanceId: lastName
options:
label: Last Name
initialValue: [email protected]
- type: component.text-field
instanceId: email
options:
label: Email
initialValue: [email protected]
# The top level action on a default jig places a button at the bottom of the screen
actions:
- children:
# A submit-form action is used to save the data from the text boxes to the SQLite database. The submit form action will automatically match the instanceIds of the controls on the jig and update the record in the local SQLite table with each instanceIds as a property for the JSON object in the Data column
- type: action.submit-form
options:
# The name of the form being submitted
formId: editCustomer
provider: DATA_PROVIDER_DYNAMIC
title: Save Customers
entity: default/customers
# The Jigx Dynamic Data provider method to update the data
method: update
recordId: [email protected]
onSuccess:
type: action.go-back Last updated
Was this helpful?