Связывание таблицы данных с DataGrid в WPF и MVVMC#

Место общения программистов C#
Ответить
Anonymous
 Связывание таблицы данных с DataGrid в WPF и MVVM

Сообщение Anonymous »

Я новичок в WPF, я использую шаблон MVVM в WPF и генерирую структуру Datatable во время выполнения, а затем связываю Datatable с DataGrid/RadGridView, который работает должным образом.

Проблема: я хочу, чтобы DataGrid/RadGridView был настраиваемым (где пользователь может добавлять новую строку, удалять строку и редактировать данные), а при нажатии кнопки «Сохранить» все должно сохраняться в базе данных. У меня есть ситуация, когда мне нужно создать пустой DataTable с разными столбцами (в зависимости от ввода пользователя). Затем введите значения в эти столбцы, а затем нажмите «Сохранить», чтобы сохранить значение в базе данных. Я могу привязать DataTable к DataGrid (я могу видеть все имена столбцов и строки данных, если в DataTable уже есть некоторые данные в сетке), но НЕ могу добавлять (вводить) или удалять любую строку во время выполнения из DataGrid. Я установил значение «True» для CanUserDeleteRows и CanUserInsertRows. Я не уверен, где я ошибаюсь. Я реализую INotifyPropertyChanged в своем классе ViewModel.

Я изо всех сил пытаюсь получить желаемый результат.

Мой код выглядит следующим образом:

ViewModel--

Код: Выделить всё

    DataTable _manualDataTable;
public DataTable ManualDataTable
{
get
{
return _manualDataTable;
}
set
{
_manualDataTable = value;
OnPropertyChanged("ManualDataTable");
}
}
Для создания DataTable —

Код: Выделить всё

    void LoadManualDataTable()
{
DataTable dtData = new DataTable();
dtData.Columns.Add("TimeStamp", typeof(DateTime));
List columns = new List();
var query = _dataContext.GetSenData().Where(sen => sen.LogID == ((DataLogs)SelectedItemNode).Logger.LogID).Select(sen => sen.SeriesID);
var queryTS = _dataContext.GetDataSeries().Where(ts => query.Contains(ts.SeriesID));
foreach (DataSeries ts in queryTS)
{
var queryPLoc = _dataContext.GetDataLoc().Where(pLoc => pLoc.ParamID == ts.ParamID).Select(pLoc => pLoc.Name);
dtData.Columns.Add(queryPLoc.First(), typeof(string));
}

ManualDataTable = dtData;
}
Код XAML –
DataTable создается, как и ожидалось (из метода LoadManualDataTable), и если я добавлю какую-либо строку через код, то эти строки будут привязаны и будут отображаться в DataGrid. Но я не могу создавать или удалять строки через DataGrid.

Буду очень благодарен за любую помощь.

Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/928 ... n-wpf-mvvm
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»