Witam.
Mam problem z aplikacją napisaną w wpf. A że jestem nieogarnięty :D to nie potrafię sobie z tym poradzić.
Mam napisane 2 eventy : MouseDoubleClick oraz SelectionChanged . Gdy tworzę "uruchamiam" wszystko za pomocą MouseDoubleClik nr Dokumentu które przekazuje do datagridview2 to wszystko jak najbardziej działa. Następnie naciskając button chcę ten dokument usunąć z bazy.Wszystko działa dokumenty zostają usuniętę i baza ładuje się na nowo. Ogólnie wszystko śmiga.
Mam jednak problem z eventem SelectionChanged a minowicie. Jak klikam nr dokumentu wyświetlają mi się poniżej jego składowe. Następnie chcę usunąć ten dokument i podczas debuggowania zauważyłem że również usunięcie elementów z bazy przebiega poprawnie lecz jednak od razu włącza się event Selection changed który wywala mi błąd na elemencie kodu :
dynamic wka = datagridview.SelectedItem;
string wuzeta = wka.WZ.ToString();
a dokładnie na przypisaniu nr wz. W MouseDoubleClick nie mam tego problemu z tego względu że po usunięciu elementu event się nie uruchamia i czeka aż wybiorę następny element. Po SelectionChanged w momencie przechodzenia elementu na " wywala błąd.
Dziwne jest dla mnie to że przy pierwszym wybieraniu event SelectionChanged działa jak należy. Dopiero po wybraniu usunięcia "klikniętego" elementu wywala mi błąd:
Ponieżej przesyłam kod elementów używanych :
public void datagridview_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
dynamic wka = datagridview.SelectedItem;
string wuzeta = wka.WZ.ToString();
acceptWZbtn.IsEnabled = true;
SitoModel ent = new SitoModel();
var query2 = (from cc in ent.WZ_DWS_SITO
where cc.WZ == wuzeta
orderby cc.PRZYCZYNA descending
select new
{
cc.MATERIAL,
cc.NAZWA_KLIENTA,
cc.NAZWA_MATERIALU,
cc.PARTIA,
cc.INDEKS,
cc.WZ_POZYCJA,
ZLECENIE_MERGE = (cc.ZLECENIE_MARZA * 100),
cc.PRZYCZYNA,
cc.CENA_MINIMALNA,
cc.ATP_SKLAD,
cc.L0,
cc.L1,
cc.L2,
cc.MARZA_ZLECENIE_ALL,
cc.ILOSC_60DNI_ABC_5PROCENT,
cc.WZ_NETTO,
cc.WZ_ZYSK,
cc.WZ_ILOSC_NA_WZ,
cc.WZ_CALA_NETTO,
cc.ZLECENIE_CENA_ZAKUPU,
cc.ZLECENIE_CENA_NETTO,
cc.WZ_CZAS,
cc.PH,
cc.WWW,
cc.ZLECENIE_ZYSK,
cc.KUNNR
}).ToList();
datagridview2.ItemsSource = query2;
string klient = query2.Select(x => x.KUNNR).FirstOrDefault().ToString();
var kontr = (from k in ent.KONTROLOWANies select k).ToList();
foreach (var it in kontr)
{
if (klient.Equals(it.ODBIORCA))
{
nameofClientlabel.Foreground = Brushes.Red;
nameofClientlabel.Content = "[" + klient + "] " + query2.Select(x => x.NAZWA_KLIENTA).FirstOrDefault().ToString();
}
else
{
nameofClientlabel.Foreground = Brushes.White;
nameofClientlabel.Content = "[" + klient + "] " + query2.Select(x => x.NAZWA_KLIENTA).FirstOrDefault().ToString();
}
}
nameofPH.Content = "PH: " + query2.Select(x => x.PH).FirstOrDefault().ToString();
var naglowki = (from d in ent.WZ_DWS_SITO where d.WZ == wuzeta select new { Naglowek = d.L0 + ", " + d.L1 + "," + d.L2 }).FirstOrDefault().ToString();
naglowek_label.Content = naglowki;
}
private void acceptWZbtn_Click(object sender, RoutedEventArgs e)
{
SitoModel ent = new SitoModel();
dynamic wkaa = datagridview.SelectedItem;
string actwuzetka = wkaa.WZ.ToString();
var skad = (from d in ent.WZ_DWS_SITO
where d.WZ == actwuzetka
select d
//select new
//{
// d.WZ,
// d.KUNNR
//}
).ToList();
foreach (var row in skad)
{
ent.WZ_DWS_SITO.Remove(row);
}
ent.SaveChanges();
DetailsDataGridViews();
getdata();
}
public void getdata()
{
SitoModel db = new SitoModel();
var query = (from d in db.WZ_DWS_SITO
where d.KUNNR != "0003000000"
orderby d.WZ_DATA descending
group d by new { d.WZ, d.KUNNR, d.WZ_DATA } into grp
select new
{
WZ = grp.Key.WZ,
KUNNR = grp.Key.KUNNR,
WZ_DATA = grp.Key.WZ_DATA,
MATERIAL = grp.Count(),
}
).ToList();
datagridview.ItemsSource = query;
acceptWZbtn.IsEnabled = false;
}
- screenshot-20190122082636.png (150 KB) - ściągnięć: 102