Mam dropdownlist wewnątrz gridview, który jest ładowany ze źródła danych, gdy ładuje gridview. Czy ktoś mógłby mi pokazać, jak mam zamiar zapętlić listę rozwijaną i usunąć niektóre elementy z listy na podstawie warunku if.Usuwanie pozycji listy z DropDownList
Odpowiedz
Nie trzeba pętli pozycje, wystarczy znaleźć pozycję i wyjąć go:
ListItem itemToRemove = myDropDown.Items.FindByValue("value");
if (itemToRemove != null)
{
myDropDown.Items.Remove(itemToRemove);
}
Lub jeśli znasz indeks elementu do usuwania, należy użyć metody RemoveAt:
myDropDown.Items.RemoveAt(0);
Ale jeśli chcesz pętli tak, tutaj jest pętla:
foreach (ListItem item in myDropDown.Items)
{
// your stuff
}
nie można używać foreach aby usunąć elementy, jak kiedyś was ha ve usunął element, kolekcja została zmodyfikowana, a pętla generuje wyjątek.
Jeśli konieczne jest przeglądanie kolekcji w celu usunięcia wielu elementów, najlepszym rozwiązaniem jest przechodzenie wstecz do kolekcji. Moje C# jest dość zardzewiałe, więc poniżej jest w VB. Powinien być łatwy do konwersji.
For x As Integer = myDropDown.Items.Count - 1 to 0 Step -1
Dim item As ListItem = myDropDown.Items(x)
If item.TestToSeeIfItShouldBeRemoved = True
myDropDown.Items.RemoveAt(x)
End If
End For
Nie można użyć dla każdej pętli, ponieważ nie można modyfikować kolekcji podczas korzystania z obiektu Enumerator. Najlepszym sposobem na to jest policzenie wstecz, jak stwierdził @Jason. Lub użyć pętli for tak:
for (int i = 0; i < this.MyDropDownList.Items.Count; i++)
{
//test to see if this item needs to be removed or not
if (IsToBeRemoved(this.MyDropDownList.Items[i]))
{
this.MyDropDownList.Items.Remove(this.MyDropDownList.Items[i]);
//re-set to next item in the list (count changed after item removed)
i -= 1;
}
}
Wystarczy pamiętać, że po usunięciu ListItem
, liczba DropDownList
pozycja ulegnie zmianie. Musisz więc zmniejszyć swoją zmienną licznika i
, bo inaczej ryzykujesz, że nie ocenisz wszystkich elementów.
To zadziałało dla mnie. Dziękuję Ci – Fandango68
Dlaczego nie można użyć for each item in mycollection.ToList()
W ten sposób można wprowadzać zmiany podczas iteracji za pośrednictwem listy, ponieważ kolekcja jest konwertowana na kopię listy, a nie na samą listę.
- 1. usuwanie pozycji z listy weak_ptrs
- 2. Usuwanie pozycji z listy po spełnieniu warunku
- 3. Usuwanie pozycji z listy pasującej do podłańcucha - Python
- 4. C# Usuwanie listy z listy
- 5. Dodawanie ListItems do DropDownList z ogólnej listy
- 6. Usuwanie pozycji z tablicy i zmniejszanie tablicy
- 7. Usuwanie elementu z ogólnej listy
- 8. Usuwanie wielu słowników z listy
- 9. Usuwanie elementów pustych z listy
- 10. Usuwanie YourSelf z listy ShareActionProvider
- 11. Animacje UICollectionView (wstawianie/usuwanie pozycji)
- 12. dodawanie/usuwanie pozycji z danymi JSON z JQuery
- 13. Zmiana atrybutów widoku na pozycji pozycji listy
- 14. Usuwanie obiektów z duplikatem właściwości z listy
- 15. Ustaw Kendo UI DropDownList szerokość
- 16. android - usuwanie pozycji z ListView przy długim kliknięciu
- 17. Uzyskiwanie pozycji listy według indeksu
- 18. Widok listy Przyciągnij do pozycji
- 19. Szczegółowe zakres pozycji listy (LINQ)
- 20. Usuwanie elementów z jednej listy w innej
- 21. Usuwanie elementu z listy za pomocą iteratora
- 22. Usuwanie ostatnich elementów N z listy
- 23. Usuwanie właściwości/kolumny z ogólnej listy
- 24. Usuwanie nans z listy w F #
- 25. Usuwanie duplikatów z listy ciągów w python
- 26. Usuwanie elementu z listy o predykacie
- 27. Usuwanie duplikatów obiektów z listy (C#)
- 28. Usuwanie kluczowych wartości par z listy słowników
- 29. Usuwanie elementu z listy MutableList w Scali
- 30. Usuwanie duplikatów odniesień z listy C#
Chcę usunąć więcej niż dwie pozycje –
Próbowałem tej opcji. po usunięciu drugiego elementu pokazuje błąd System.InvalidOperationException: Kolekcja została zmodyfikowana; operacja wyliczania może nie zostać wykonana. –