| 

.NET C# Java Javascript Exception

3
Hallo Leute,

ich habe ein DataGridview it einer Bindinglist als DataSource.
Wenn ich jetzt versuche aus der Bindinglist einen Eintrag zu entfernen, funktioniert es nicht.
Der Eintrag bleibt einfach in der Liste stehen.
Mein Code:

var result = MyBindingList.Where(_item => _item.ID.Equals(ID)).ToList();
result.ForEach(item => MyBindingList.Remove(item));


MyBindingList.Remove(item) hat keinerlei Auswirkung auf die Liste.
Was mache ich falsch, wie kann ich den Eintrag aus der Liste entfernen?

Vielen Dank für Eure Hilfe.
Carsten
26.10.2012
Carsten Ilwig 337 1 1 6
2 Antworten
0
Hi,

sollte eigentlich so funktionieren. Habe deinen Code gerade mal getestet und er hat funktioniert. Hier mein Test-Code:

var bindinglist = new BindingList<Button>();
bindinglist.Add(new Button() { Tag = 1 });
bindinglist.Add(new Button() { Tag = 2 });
bindinglist.Add(new Button() { Tag = 1 });
bindinglist.Add(new Button() { Tag = 3 });
bindinglist.Add(new Button() { Tag = 1 });

var result = bindinglist.Where(_item => (int)_item.Tag == 1).ToList();
result.ForEach(item => bindinglist.Remove(item));


Liefert deine Where-Abfrage auch tatsächlich Ergebnisse zurück? Nicht dass dein result leer ist und nichts entfernt werden kann.
Ist das Flag BindingList.AllowRemove false? Es gibt nämlich an, ob Elemente gelöscht werden dürfen oder nicht.

Gruß
Stefan
26.10.2012
stefbauer 71 3
0
Hallo Stefan,

vielen Dank für Deine Antwort.
Das Flag 'AllowRemove' ist auf 'TRUE' gesetzt.
Wenn ich es mit einer neu erstellten 'lokalen' und UNGEBUNDENEN BindingList teste funktioniert er bei mir auch:
BindingList<MyItem> testListe = new BindingList<MyItem>(MyBindingList.ToList());
var result = testListe.Where(_item => _item.ID.Equals(id)).ToList();
result.ForEach(item => testListe.Remove(item));

Kann es damit zusammenhängen, dass ich den Eintrag aus meiner Liste nicht löschen kann,
weil die Liste an eine DataGridView gebunden ist?

Carsten
26.10.2012
Carsten Ilwig 337 1 1 6

Stelle deine Datagridview-Frage jetzt!