A Data Table with delete button in one of the columns deletes the correct row and the row next to it.
Usually, this behaviour doesn't present any client-side or server-side errors.
When rows are added on client-side and also server-side in parallel, this can cause synchronization problems between the UI data and the Business Object Data. For that reason, the operations performed in each row can be wrong.
A Data Table that uses the provided Add button to add new rows and at the same time triggers a boundary event to also add a row on server-side. Since both operations will add a row to the list at the same time but in a different order:
- Add Button: Add the row at the UI level and then escalate to the Business Object
- Boundary Event: Add the row at the Business Object level and then the Data Table detects the change event and escalates it to the UI
It will create a synchronization issue between the two level.
Resolving the problem
Adding new rows to the Data Table can be done by one of the two options and not with both at the same time.
- Using the Data Table Add button, this will add a new empty row on the Table. Then it can be edited directly on the Table or by Modal and use the Operation Service or calling a service with a custom button ("Save") to save the changes at the SoR if required.
- Adding a custom Add button that fires a boundary event and adds the row on server-side, letting the Data Table update the UI when the Business Object changes.
The Data Table boundary event on add or delete row shouldn't be used to add or delete rows but to perform operations required when one of this actions occurs.