Tengo una lista desplegable dentro de una vista de cuadrícula, que se carga desde un origen de datos cuando se carga la vista de cuadrícula. ¿Podría alguien mostrarme cómo hago para colocar en bucle la lista desplegable y eliminar ciertos elementos de la lista en función de una condición if.Eliminar elementos de lista de DropDownList
Respuesta
No hay necesidad de lazo de los elementos, acaba de encontrar el elemento y quitarlo:
ListItem itemToRemove = myDropDown.Items.FindByValue("value");
if (itemToRemove != null)
{
myDropDown.Items.Remove(itemToRemove);
}
O si se conoce el índice del elemento a eliminar, utilizar el método RemoveAt:
myDropDown.Items.RemoveAt(0);
Pero si quieres bucle de todos modos, aquí está el bucle:
foreach (ListItem item in myDropDown.Items)
{
// your stuff
}
no se puede usar foreach para eliminar elementos, como una vez que ha Si eliminas un elemento, la colección se modifica y el ciclo arroja una excepción.
Si debe recorrer la colección para eliminar varios elementos, la mejor solución es realizar un ciclo hacia atrás en la colección. Mi C# está bastante oxidado, así que lo siguiente está en VB. Debería ser fácil de convertir.
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
No se puede utilizar un bucle for-each porque no se puede modificar la colección mientras se utiliza el objeto de enumerador. La mejor manera de hacerlo es contar hacia atrás según lo indicado por @Jason. O utilizar un bucle como este:
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;
}
}
Ten en cuenta que después de quitar el ListItem
, el recuento DropDownList
elemento cambia. Por lo tanto, deberá disminuir su contra variable i
, o corre el riesgo de no evaluar todos los elementos.
Esto funcionó para mí. Gracias – Fandango68
Por qué no puede usar for each item in mycollection.ToList()
De esta manera puede realizar cambios durante la iteración a través de su lista, ya que la colección se convierte en una copia de una lista y no en la propia lista.
- 1. Prolog eliminar elementos múltiples de una lista
- 2. ¿Cómo eliminar varios elementos de una lista?
- 3. Eliminar elementos de una lista en otra
- 4. Python: condicionalmente eliminar elementos de la lista
- 5. Eliminar elementos nulos de la lista
- 6. Eliminar todos los elementos de una lista
- 7. Python: eliminar muchos elementos de una lista
- 8. Eliminar elementos de una lista anidada Python
- 9. Eliminar elementos de la lista de otras listas con criterios
- 10. a juego y eliminar elementos de la lista de tuplas
- 11. Cómo eliminar elementos de java.util.List?
- 12. eliminar elementos de una lista genérica <t>
- 13. Eliminar elementos nulos de una lista en Groovy
- 14. Eliminar elementos de una lista que contiene caracteres específicos
- 15. Latex Eliminar espacios entre elementos de la lista
- 16. Cómo eliminar la lista vista de todos los elementos
- 17. Eliminar elementos de la lista en los índices dados
- 18. Eliminar una lista de elementos seleccionados en QListView
- 19. Cómo copiar elementos de una DropDownList a otra
- 20. ¿Cómo eliminar el elemento de kendo dropDownList si es el último?
- 21. Método de lista para eliminar el último elemento de la lista, así como todos los elementos
- 22. ¿Cómo eliminar elementos duplicados de una lista usando la lista de comprensión?
- 23. Problemas al eliminar elementos de una lista al iterar a través de la lista
- 24. Eliminación dinámica de elementos de la lista
- 25. Eliminar una lista de objetos de otra lista
- 26. Imprimir lista de elementos
- 27. Databind ASP.NET Lista de ListItem a DropDownList problema
- 28. ¿Lista <MyClass> como origen de datos para DropDownList?
- 29. Adición ListItems a un DropDownList de una lista genérica
- 30. C# - Lista - eliminar todos los elementos pero NO los primeros
Quiero quitar más de dos elementos –
He intentado esta opción. Si elimina el segundo elemento, muestra el error System.InvalidOperationException: se modificó la colección; la operación de enumeración no se puede ejecutar. –