Приветствую всех!C# Применить изменения, внесенные в скопированные данные DataTable
Я наткнулся на проблему, пытаясь отобразить и отредактировать данные в нескольких GridControls (DataGridViews), используя несколько DataTables.
У меня есть основной DataTable, который хранит данные об Пользователях (только пример) и набор других DataTables, которые хранят разные данные (также о пользователях).
Путь, я отображая их теперь выглядит следующим образом: Все дополнительные DataTables есть столбец «USERID» и когда строка щелкнула в главном GridControl (Users), данные для других GridControls копируются с помощью
DataTable.Select(„UserId = …”)
, а затем данные для только выбранного пользователя отображаются в GridControl. DataTable с полными данными хранится в другой переменной, и каждый раз, когда нажимается строка MainGrid, полные данные используются для создания DataTable для выбранного пользователя.
Данные отображения работают нормально, но когда дело доходит до редактирования этих дополнительных GridControls, есть некоторые проблемы. Для их редактирования я использую SqlDataAdapters, которые генерируют полный DataTable для каждой из дополнительных таблиц, и когда нажата кнопка сохранения, они просто обновляют базу данных.
Проблема заключается в том, что после того, как я использую
DataTable.Select(“UserId = …”)
если я редактирую новую таблицу, то полная таблица не будет зависеть от этого.
С другой стороны, я не могу просто сделать
DataTable _NewTable = _OldTable
, потому что тогда, если я пытаюсь удалить строки с данными другого пользователя, что я не хочу, чтобы отобразить, они собираются быть полностью удалены из полного DataTable.
Поскольку я использую элементы управления DevExpress, я мог бы просто установить DataSource GridControl в полную таблицу и применить фильтр в GridControl, но это сделает данные фильтрации более трудными для конечного пользователя.
У вас есть идея о том, как решить эту проблему, чтобы я мог редактировать эти «маленькие» DataTables, а затем каким-то образом обновлять эти измененные строки в полном DataTable и использовать SqlDataAdapter?
Спасибо за помощь и извините, если я смутил вас!
Обновить полную таблицу из базы данных после внесения изменений. – jdweng
@jdweng Спасибо за ответ. Это поможет, если я захочу сохранить строки после того, как они потеряют фокус, но я хочу сохранить, когда нажимается кнопка, чтобы позволить конечному пользователю отменить изменения, если это необходимо.Мне нужно сохранить исходный DataTable со всеми изменениями до тех пор, пока не будет нажата кнопка сохранения, а затем просто используйте SqlDataAdapter для обновления изменений в базе данных. –
Вы не можете иметь свой торт и съесть его тоже. Вы хотите обновить экран, но сохраните исходный тип данных, пока пользователь не проверит обновления. Поэтому вы должны хранить две копии DataTable. Один перед изменением и один после изменения. Вы можете переключить источник данных GridControl (привязка), чтобы указать на одну из двух таблиц данных. – jdweng