Witam serdecznie,
Wiecie może jak zrobić przykład edycji i zapisu rekordu w tabeli ?
Kod poniżej:
Warstwa View
<DataGrid AutoGenerateColumns="False" AlternationCount="2" ItemsSource="{Binding Lista}" SelectedItem="{Binding WybranyObiekt}">
<DataGrid.Columns>
<DataGridTextColumn Header="NR" Binding="{Binding IdWydania}"/>
<DataGridTextColumn Header="KOD TOWARU" Binding="{Binding TowaryWMagazynieKodTowaru}"/>
<DataGridTextColumn Header="NAZWA TOWARU" Binding="{Binding TowaryWMagazynieNazwaTowaru}"/>
<DataGridTextColumn Header="ILOŚĆ" Binding="{Binding Ilosc}"/>
<DataGridTextColumn Header="UWAGI" Binding="{Binding Uwagi}"/>
<DataGridTextColumn Header="DOKUMENT ZATWIERDZONY?" Binding="{Binding Zatwierdzony}"/>
</DataGrid.Columns>
</DataGrid>
Warstwa ViewModel
public class WydanieZewnetrzneViewModel:WszystkieViewModel<WydanieZewnetrzneForAllView>
{
#region Konstruktor
public WydanieZewnetrzneViewModel()
:base()
{
base.DisplayName = "Wydanie Zewnętrzne (WZ)";
}
#endregion Konstruktor
#region Helpers
public override void load()
{
Lista = new ObservableCollection<WydanieZewnetrzneForAllView>
(
from wydanieZewnetrzne in fakturyEntities.WydanieZewnetrzne
select new WydanieZewnetrzneForAllView
{
IdWydania = wydanieZewnetrzne.IdWydania,
TowaryWMagazynieKodTowaru = wydanieZewnetrzne.TowaryWMagazynie.KodTowaru,
TowaryWMagazynieNazwaTowaru = wydanieZewnetrzne.TowaryWMagazynie.NazwaTowaru,
Ilosc = wydanieZewnetrzne.Ilosc,
DataOperacji = wydanieZewnetrzne.DataOperacji,
Uwagi = wydanieZewnetrzne.Uwagi,
Zatwierdzony = wydanieZewnetrzne.Zatwierdzony
}
);
}
public override void delate()
{
var kasowany = WybranyObiekt;
//fakturyEntities.WydanieZewnetrzne.Remove(kasowany); - tutaj nie wiem jak powinno wyglądać zapytanie linqu?
fakturyEntities.SaveChanges();
Lista.Remove(kasowany);
}
public override void edit()
{
// W tym miejscu nie wiem jak edytować dany rekord - zapytanie Linqu lub inna metoda
}
#endregion Helpers
}
}
Klasa WszystkieViewModel
public abstract class WszystkieViewModel<T> :DataBaseViewModel
// <T> - Typ generyczny - Dziedziczenie po klasie zakładek.
{
#region Fields
private ObservableCollection<T> _Lista;
//Typ <T> Abstrakcyjny typ czego to jest lista T różne rzeczy z klas dziedziczących.
private BaseCommand _DelateCommad;
private BaseCommand _EditCommand;
#endregion //Fields
#region Propertis
private T _wybranyObiekt;
public T WybranyObiekt
{
get
{
return _wybranyObiekt;
}
set
{
_wybranyObiekt = value;
// tu obsługa PropertyChanged etc.
}
}
public ICommand DelateCommand
{
get
{
if (_DelateCommad == null)
_DelateCommad = new BaseCommand(delate);
return _DelateCommad;
}
}
public ICommand EditCommand
{
get
{
if (_EditCommand == null)
_EditCommand = new BaseCommand(edit);
return _EditCommand;
}
}
public ObservableCollection<T> Lista
{
get
{
if (_Lista == null)
load();
return _Lista;
}
set
{
_Lista = value;
OnPropertyChanged(() => Lista);
}
}
#endregion Propertis
#region Helpers
public abstract void delate();
public abstract void edit();
#endregion //Helpers
}
}
klasa WydanieZewnetrzneForAllView
public class WydanieZewnetrzneForAllView
{
public int IdWydania { get; set; }
public string TowaryWMagazynieKodTowaru { get; set; }
public string TowaryWMagazynieNazwaTowaru { get; set; }
public decimal Ilosc { get; set; }
public DateTime DataOperacji { get; set; }
public string Uwagi { get; set; }
public bool Zatwierdzony { get; set; }
}
}