There are two techniques that we use to save grid data to the database. One involves trapping the UserAddingRow, UserDeletingRow, and CellEndEdit events and committing the data to the database immediately.
That technique doesn't work or is not appropriate on all forms, like on a form that would have multiple changes going on at one time. An order entry form would have a total field that changed as the quantity in the grid was updated. In that case we hold all the changes and commit them with the Save button.
This article is a code example of that technique.