Для каждой строки у меня будет первичный ключ (скрытый), грязный флаг и новый флаг. В сетке вы должны установить флаг «грязный» в значение «истина» при внесении изменений. При добавлении новых строк в пользовательском интерфейсе вы должны установить новый флаг, а также сгенерировать первичный ключ (это будет проще всего, если вы используете GUID для ключа). Затем, когда вы отправляете все это обратно на сервер, вы выполняете вставки, когда установлен новый флаг, и обновляете для тех, у кого есть грязный флаг.
Когда фиксация данных будет завершена, вы просто удалите грязные и новые флаги.
Конечно, если данные совместно используются несколькими участниками и могут быть отредактированы одновременно, это может привести к еще большему, если вы не хотите, чтобы кто-то перезаписывал правки других.