Ich habe eine dropdownlist innerhalb eines gridview geladen wird, die aus einer Datenquelle, wenn das gridview geladen. Könnte jemand mir bitte zeigen, wie ich gehen über die Schleife der dropdownlist und entfernen bestimmter Elemente aus der Liste basierend auf einem if-Bedingung.
InformationsquelleAutor der Frage | 2009-09-11
Nicht brauchen, um in einer Schleife die Elemente, sondern nur den Artikel zu finden und entfernen Sie Sie :
Oder wenn Sie wissen, der index des Elements zu entfernen, verwenden Sie RemoveAt-Methode :
Aber wenn Sie wollen, um die Schleife wie auch immer, hier ist der loop :
InformationsquelleAutor der Antwort Canavar
Können Sie nicht foreach verwenden, um Elemente zu entfernen, sobald Sie entfernt ein Element der Kollektion geändert wird und die Schleife eine exception wirft.
Wenn müssen Sie eine Schleife durch die Sammlung um mehrere Elemente zu entfernen, die beste Lösung ist, um eine Schleife rückwärts durch die Sammlung. Mein C# ist ziemlich rostig, so ist Folgendes in VB. Sollte leicht zu konvertieren.
InformationsquelleAutor der Antwort Jason Berkan
Können Sie nicht verwenden Sie eine for-each-Schleife, weil Sie können nicht ändern, die collection während der Verwendung der enumerator-Objekt. Der beste Weg, es zu tun ist, rückwärts zu zählen wie bereits von @Jason. Oder verwenden Sie eine for-Schleife wie diese:
Nur beachten, dass nach dem entfernen der
ListItem
dieDropDownList
Anzahl von Elementen zu ändern. So müssen Sie verringern Sie Ihren counter variablei
oder sonst riskieren Sie, nicht die Bewertung aller Elemente.InformationsquelleAutor der Antwort J.Hendrix
Warum kannst du nicht verwenden
for each item in mycollection.ToList()
Auf diese Weise können Sie änderungen während der iteration durch die Liste, da die Sammlung umgewandelt wird, eine Kopie einer Liste und nicht die tatsächliche Liste selbst.
InformationsquelleAutor der Antwort user2441818