Я новичок в WPF, я использую шаблон MVVM в WPF и генерирую структуру Datatable во время выполнения, затем связываю Datatable с DataGrid / RadGridView, который работает, как и ожидалось.
Проблема: я хочу DataGrid/ RadGridView настраивается (где пользователь может добавить новую строку, удалить строку и редактировать данные) и при нажатии кнопки сохранить все должно быть сохранено в базе данных.У меня есть ситуация, когда мне нужно создать пустой DataTable с разными столбцами (в зависимости от ввода пользователя).Затем введите значения в эти столбцы, а затем нажмите «Сохранить», чтобы сохранить значение в базе данных.Я могу связать DataTable с DataGrid (я вижу все имена столбцов и строки данных, если в DataTable уже есть данные в сетке), но НЕ могу добавить (ввести) или удалить любую строку во время выполнения из DataGrid,Я установил «Истинное» значение для 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<DataColumn> columns = new List<DataColumn>();
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 -
<DataGrid Grid.Row="0" AutoGenerateColumns="True" ItemsSource="{Binding ManualDataTable}" CanUserAddRows="True" CanUserDeleteRows="True" IsReadOnly="False" Name="dataGridManualData"/>
DataTable создается должным образом (из метода LoadManualDataTable), и если я добавлю любую строку черезкод затем эти строки будут связаны и будут отображаться в DataGrid.Но я не могу создавать или удалять строки через DataGrid.
Любая помощь будет высоко оценена.
Заранее спасибо!