Вроде уже в голове есть идеи..... но , а есть хоть малейшый пример подобного! Данные же все таки динамические?
если ищешь как это сделать, чтобы было Ъ, то читай про паттерн «команда»...
соответственно разделяешь таблицу и модель и делаешь так, чтобы любое взаимодействие таблицы и модели шло через специальный объект-команду с методами «Выполнить(модель)» и «Отменить(Модель)»...
если таблица небольшая, то можно запоминать каждый раз её всю, тогда можно использовать паттерн мементо (не помню как по нашему)
ЗЫ: в помощь книжечка «Приемы объектно-ориентированного программирования» Э. Гамма Р. Хелм
ЗЗЫ: задача очень распространённая, но совсем не тривиальная и не простая...