Tengo un formulario que tiene muchas casillas de verificación generadas dinámicamente. En tiempo de ejecución, ¿cómo puedo iterar a través de cada uno de ellos para poder obtener su valor y sus ID?¿Cómo puedo repetir todas las casillas de verificación de un formulario?
Respuesta
foreach(Control c in this.Controls)
{
if(c is CheckBox)
{
// Do stuff here ;]
}
}
No funciona si los controles están incrustados dentro de otros controles. "esto" no es todo. – Fandango68
Sí @ Fernando68 tendrías que crear una función recurrente que pase por todos los 'hijos'. Esta es una respuesta de hace casi 8 años: D –
Sí, no funciona –
Cuando se crean, obtenga una lista de referencias a los valores, y luego puede recorrer la lista.
como no, tal vez (si es en Windows Forms):
foreach(var checkBox in myForm.Controls.OfType<CheckBox>())
{
//Do something.
}
He estado haciendo esto por un tiempo, siempre que sepa que no hay nido en los contenedores. Puede mencionar que su solución también permite agregar .adhere (c => c.Checked) (u otra expresión de Linq) para el inconsciente. – Herb
Si es Windows Forms, puede intentar algo como esto:
private void button1_Click(object sender, EventArgs e)
{
Dictionary<string, bool> checkBoxes = new Dictionary<string, bool>();
LoopControls(checkBoxes, this.Controls);
}
private void LoopControls(Dictionary<string, bool> checkBoxes, Control.ControlCollection controls)
{
foreach (Control control in controls)
{
if (control is CheckBox)
checkBoxes.Add(control.Name, ((CheckBox) control).Checked);
if (control.Controls.Count > 0)
LoopControls(checkBoxes, control.Controls);
}
}
recordar que controles contenedores pueden contener los niños, por lo es posible que desee verificarlos también.
utilizo un método simple extensión que va a trabajar para cualquier tipo de control:
public static IEnumerable<T> AllControls<T>(this Control startingPoint) where T : Control
{
bool hit = startingPoint is T;
if (hit)
{
yield return startingPoint as T;
}
foreach (var child in startingPoint.Controls.Cast<Control>())
{
foreach (var item in AllControls<T>(child))
{
yield return item;
}
}
}
A continuación, se puede usar como tal:
var checkboxes = control.AllControls<CheckBox>();
Usando IEnumerable le permite elegir la forma de almacenar la resultados, y también le permite usar linq:
var checkedBoxes = control.AllControls<CheckBox>().Where(c => c.Checked);
+1 se pueden anidar, buen punto, y el uso de lambdas siempre es un plus) –
Esto es probablemente más útil que Control.Controles –
+1 Para encontrar controles anidados. Esta respuesta es la mejor. –
Sé que esto es viejo, pero fue fácil, ya que puedo ima gine.
Solo agregue todas las casillas de verificación en un List<Checkbox>
, todas las casillas de verificación están en la lista e incluso si cambian en la interfaz de usuario en la lista también.
List<Checkbox> checkboxes = new List<Checkboxes>();
checkboxes.Add(chk1);
checkboxes.Add(chk2);
//So add all checkboxes you wanna iterate
foreach(Checkbox checkbox in checkboxes){
//Do something using checkbox object
}
Espero que esto ayude :)
- 1. ¿Cómo puedo repetir todas mis casillas marcadas?
- 2. Desmarque todas las casillas de verificación
- 3. Obteniendo todas las casillas de verificación seleccionadas de un FormCollection
- 4. jquery seleccione todas las casillas de verificación
- 5. Marque/Desmarque todas las casillas de verificación
- 6. Desmarque todas las casillas de verificación en un ListView encargo
- 7. ¿Cómo encontrar todas las casillas de verificación no seleccionadas?
- 8. ¿Cómo puedo seleccionar todas las casillas de verificación de un formulario usando JavaScript puro (sin marcos JS)?
- 9. javascript seleccionar todas las casillas de verificación en una tabla
- 10. obteniendo todas las casillas marcadas en un formulario
- 11. jQuery - alternar seleccionar todas las casillas de verificación
- 12. Encontrar todas las casillas de verificación se comprueban en jQuery
- 13. Cómo obtener todas las casillas marcadas
- 14. casillas de verificación jQuery
- 15. Rails 3: cómo guardar las casillas de verificación (no) marcadas?
- 16. Usando el enlace marcado en knockout con una lista de casillas de verificación, marca todas las casillas de verificación
- 17. casillas de verificación de pirámide
- 18. Si las declaraciones para Casillas de verificación
- 19. QTreeView Casillas de verificación
- 20. Jquery marque las casillas de verificación
- 21. ¿Cómo obtengo los valores de todas las casillas de verificación seleccionadas en una solicitud de Django.POST?
- 22. ¿Cómo marcar todas las casillas en forma actual con jquery?
- 23. cómo obtener todas las casillas de verificación seleccionadas nombre de nodo en TreeView utilizando C# 4.0?
- 24. Spring MVC y casillas de verificación
- 25. jQuery - seleccionar todas las casillas de verificación con el nombre de la matriz js
- 26. Marque todas las casillas de verificación en la carga de la página con jQuery
- 27. advertir al usuario si todas las casillas de verificación están desmarcadas
- 28. Jquery cómo contar marcó e inhabilitó las casillas de verificación
- 29. iterar sobre las filas/casillas de verificación en un RadGrid
- 30. Programemente recorro un DatagridView y marque las casillas de verificación
¿Estás hablando de Windows Forms o ASP.NET? –