Problem: Ich möchte, dass DataGrid/RadGridView konfigurierbar ist (wo der Benutzer eine neue Zeile hinzufügen, eine Zeile löschen und die Daten bearbeiten kann) und beim Klicken auf die Schaltfläche „Speichern“ alles in der Datenbank gespeichert werden soll. Ich habe eine Situation, in der ich eine leere DataTable mit verschiedenen Spalten erstellen muss (abhängig von der Benutzereingabe). Geben Sie dann Werte in diese Spalten ein und klicken Sie dann auf „Speichern“, um den Wert in der Datenbank zu speichern. Ich kann DataTable an DataGrid binden (ich kann alle Spaltennamen und Datenzeilen sehen, wenn bereits Daten in der DataTable im Raster vorhanden sind), kann aber zur Laufzeit keine Zeile aus DataGrid hinzufügen (eingeben) oder löschen . Ich habe den Wert „True“ für CanUserDeleteRows und CanUserInsertRows festgelegt. Ich bin mir nicht sicher, wo ich falsch liege. Ich implementieren INotifyPropertyChanged in meiner ViewModel-Klasse.
Ich habe Mühe, das gewünschte Ergebnis zu erhalten.
Mein Code sieht wie folgt aus:
ViewModel--
Code: Select all
DataTable _manualDataTable;
public DataTable ManualDataTable
{
get
{
return _manualDataTable;
}
set
{
_manualDataTable = value;
OnPropertyChanged("ManualDataTable");
}
}
Code: Select all
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;
}
Code: Select all
Jede Hilfe wird sehr geschätzt.
Dank im Voraus!