I have a GridView that allows editing the values in every column, in every row, all the time. The user enters in all their changes, clicks Save once and all changes are com
You could dynamically add the new row via javascript, and on the save command look for newly added rows. That is fairly common.
Just off my head I can think of two options. The first is to cache the original results that you are binding into the grid and when you need to add another row you add a datarow to the datatabale that you are binding to and then bind this to the grid. If there are changes in the grid then you need to update the datatable. Once all changes have been made and the user clicks the save button you can iterate through the table and update the DB with the data.
It might look like this
Page Loads
When user asks for a new row
When the user saves the grid
The other way to do this is by creating the grid dynamically but this will involve far more effort than it's worth given what you have described.