Что ещё может быть: DataSet всегда хранит старые данные на равне с изменёнными для того, чтоб иметь возможность отката (RejectChanges), потому возможно изменения надо закреплять.
А, кстати, там используется DataGrid на странице? Если да, то возможно у него не установлено сохранять контекст между сессиями.
И ещё — в примерах для книги "Professional: ASP.NET" подобный же пример, но обновление ведётся на уровне записей, то есть для каждой строчки есть три кнопки (update, delete, cancel) при нажатии на которые генерируются сообщения, при обработке которых выполняется SQL-запрос, а потом повторяется привязка DataSet к DataGrid.
Да, и ещё там надо EditItemIndex у DataGrid устанавливать, чтоб сказать, какая запись редактируется