Hallo
ich habe ein dataGrid, dass die Daten aus einer gemappten
Liste (Verweis auf SQL Tabelle) darstellt.
Nun möchte ich manuell (at runtime) neue Zeilen/Daten einfügen.
Die eingefügten Daten müssen aus dem Grid ausgelesen/gecastet
werden und in die SQL-Tabelle geschrieben werden.
Leider funktioniert das Auslesen neu eingegebener Daten nicht.
dataRow wird nur gefüllt, wenn SelectedItem auf eine bereits
vorhandene Zeile zeigt (z.B. für Update). Bei einer neu
eingegebenen Zeile (Add) sind alle Felder in dataRow == null.
Was kann ich machen, um dataRow mit den neuen Daten zu füllen,
um eine Add-Funktion zu realisieren ?
mehr Code:
Vielleicht gibt es eine Lösung ohne MVVM, da ich noch keine Erfahrung damit habe.
Vielen Dank.
ich habe ein dataGrid, dass die Daten aus einer gemappten
Liste (Verweis auf SQL Tabelle) darstellt.
Nun möchte ich manuell (at runtime) neue Zeilen/Daten einfügen.
Die eingefügten Daten müssen aus dem Grid ausgelesen/gecastet
werden und in die SQL-Tabelle geschrieben werden.
Leider funktioniert das Auslesen neu eingegebener Daten nicht.
Code:
IcaoItem dataRow = (IcaoItem)dgrMain.SelectedItem;
//oder
IcaoItem dataRow = e.Row.DataContext as IcaoItem;
dataRow wird nur gefüllt, wenn SelectedItem auf eine bereits
vorhandene Zeile zeigt (z.B. für Update). Bei einer neu
eingegebenen Zeile (Add) sind alle Felder in dataRow == null.
Was kann ich machen, um dataRow mit den neuen Daten zu füllen,
um eine Add-Funktion zu realisieren ?
mehr Code:
Code:
private void dgrMain_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
if (e.EditAction == DataGridEditAction.Commit)
{
IcaoItem iItem = e.Row.DataContext as IcaoItem;
var matchedData = (from icItem in ic.Icaos
where icItem.ID == iItem.ID
select icItem).SingleOrDefault();
//Insert New DataRow <-- funktioniert nicht
if (matchedData == null)
{
IcaoItem p = new IcaoItem();
p.ID = ic.Icaos.Count() + 1;
p.IcaoName = iItem.IcaoName;
p.Apt = iItem.Apt;
p.City = iItem.City;
p.Country = iItem.Country;
ic.Icaos.InsertOnSubmit(p);
ic.SubmitChanges();
}
//Update DataRow <-- funktioniert
else
{
matchedData.IcaoName = iItem.IcaoName;
matchedData.Apt = iItem.Apt;
matchedData.City = iItem.City;
matchedData.Country = iItem.Country;
ic.SubmitChanges();
lblCrudStatus.Content = "Row updated successfully!";
}
}
}
// ic.Icaos ist die gemappte Liste
Vielleicht gibt es eine Lösung ohne MVVM, da ich noch keine Erfahrung damit habe.
Vielen Dank.