Datasource Inline Edit
Audience:
Low-code EngineersSkill Prerequisites:
Actions,Listings
Turns rows of a Listing into editable fields, so users can change values right in the table and save them without opening a form.
Put it on a Listing button. On an item button, only that row becomes editable. On a root button, every row on the current page becomes editable. When the user clicks Save, the Listing writes the changes to its data source, then runs the On Save actions for each row and the On Complete actions once at the end.
Typical Use Cases
- Let users correct a value, such as a status or a quantity, without leaving the Listing
- Edit many rows at once from a root button, then save them in one go
- Run extra logic after each saved row, for example writing an audit record or sending a notification
Don't use it to
- Add new rows. Use Datasource Inline Add instead.
- Edit fields that aren't shown in the Listing, or that need a full form. Use Datasource Edit or Open Form Popup instead.
- Update rows without user input. Use Run SQL Query instead.
Related Actions
| Action Name | Description |
|---|---|
| Datasource Inline Add | Adds a new editable row to the Listing. |
| Datasource Edit | Opens the data source's edit page for an entry. |
| Datasource Delete | Deletes the entry from the data source. |
| Datasource Refresh | Reloads the Listing's data. |
Input Parameter Reference
| Parameter | Description | Supports Tokens | Default | Required |
|---|---|---|---|---|
| On Save | Actions that run after each row is saved to the data source. The row's values are available as tokens named after the columns, for example [Status]. Use these actions for extra logic only. The save itself is already done. | No | empty | No |
| On Complete | Actions that run once, after all rows are saved. Row values aren't available here. | No | empty | No |
Setting up editable columns
Only columns with an inline edit field are editable. Set it in the Listing's field settings, under Inline Edit:
- Field: the input type, such as
Textbox,Textarea,Checkbox,Dropdown,Dropdown with Checkboxes,Datepicker,Datetimepicker,ColorpickerorPassword. - Override Value: use it when the input's value comes from another field, for example a dropdown that stores an ID held in a different column.
- Validation: rules checked before anything is saved.
Columns without an inline edit field stay read-only while the row is in edit mode.
How saving works
- The user clicks Save. Each edited row can also be saved on its own with the row's Save button, and Cancel discards the changes.
- All rows are validated first. If any field fails validation, nothing is saved and the errors are shown next to the fields.
- For each row, the data source saves the changes, then the On Save actions run.
- After the last row, the On Complete actions run.
- The Listing leaves edit mode and reloads its data.
How the data source saves the changes depends on its type:
| Data source | What happens on save |
|---|---|
| Database Table | Builds an UPDATE statement from the submitted values that match table columns. |
| SQL Advanced Query, SQL Select | Runs the SQL Query for Updating Items set on the data source, with the row values as tokens. If it's empty, nothing is saved. |
| Server Request (JSON) | Nothing is saved. Do the update yourself in On Save. |
Considerations
- Final action. Actions placed after Datasource Inline Edit on the same button don't run. Put follow-up logic in On Save or On Complete.
- Errors in On Save stop the save. If an On Save action fails, the error is shown and the remaining rows aren't saved. Rows saved before it stay saved.
- Other results in On Save are ignored. An On Save action that ends execution, such as a message or a redirect, only stops the rest of that row's On Save actions. The next row is still processed.
- Table view only. Inline editing works in the Listing's table view.
- Always in edit mode. To keep the whole Listing editable without a button, use the Lock into Edit Mode setting. See Listings General Settings.
Examples
To understand how to use the below examples, please see Running Examples.
1. Edit a row and record who changed it
Add this action to an item button. The user edits the row inline. After each row is saved, On Save writes the change to an audit table.
{
"Title": "Datasource Inline Edit",
"ActionType": "DataSource.InlineEdit",
"Description": "Edit the order inline and log the change",
"Parameters": {
"OnSave": [
{
"Title": "Run SQL Query",
"ActionType": "RunSql",
"Parameters": {
"SqlQuery": "INSERT INTO OrderAudit (OrderId, Status, ChangedBy, ChangedOn) VALUES (@OrderId, @Status, @UserId, GETDATE())",
"BindTokens": [
{ "name": "OrderId", "value": "[OrderId]" },
{ "name": "Status", "value": "[Status]" },
{ "name": "UserId", "value": "[User:UserId]" }
]
}
}
],
"OnComplete": []
}
}
2. Edit the whole page and recalculate totals once
Add this action to a root button. Every row on the page becomes editable. After all rows are saved, On Complete runs a stored procedure once, instead of once per row.
{
"Title": "Datasource Inline Edit",
"ActionType": "DataSource.InlineEdit",
"Description": "Bulk edit the current page",
"Parameters": {
"OnSave": [],
"OnComplete": [
{
"Title": "Run SQL Query",
"ActionType": "RunSql",
"Parameters": {
"SqlQuery": "EXEC dbo.RecalculateOrderTotals"
}
}
]
}
}
Revised 09/26/2026