foreach para una table

20/06/2006 - 13:47 por zero18pub | Informe spam
Tengo una table html q converti en control del servidor al que tiene 20
filas y 40 celdas.
He añadido un radiobuttonlist a las 20 celdas de izquierda.

Voy a recorrer la tabla para encontrar los radiobuttonlist

public int recorre(Control parent)
{

foreach (Control ctrl in parent.Controls) {
if (ctrl.Controls.Count > 0)
{

b += 1;
recorre(ctrl);
}

} return b;
}
Solo recorro los htmltableCell no encuentro los radiobuttonlist. que
hacer

Preguntas similare

Leer las respuestas

#6 Misael Monterroca
20/06/2006 - 17:56 | Informe spam
We, y por que no usar las bondades el lenguaje :D

RadioButtonList lista = ctrl as RadioButtonList;

if(lista != null)
{
//Lo que se tenga que hacer
}

Aqui de metiche :D
{
this.Saludo = Saludos!
this.Nombre = Misael Monterroca | Microsoft MVP C#;
this.Blog = http://www.neo-mx.com/blogs/neo-mx
}


"Octavio Hernandez" wrote in message
news:
Mostrar la cita
#7 Octavio Hernandez
20/06/2006 - 18:36 | Informe spam
Hola Misael,

¡De acuerdo!
Aunque en cuanto a rendimiento creo que mi solución es un pelín mejor...

Salu2 - Octavio


"Misael Monterroca" escribió en el mensaje
news:
Mostrar la cita
#8 Misael Monterroca
20/06/2006 - 18:58 | Informe spam
Podria ser, aunque como el operador "as" solo funciona a tipos por
referencia, ese pelin podria ser entonces aplicable a la segunda solución,
hum... ya me hiciste pensar.

{
this.Saludo = Saludos!
this.Nombre = Misael Monterroca | Microsoft MVP C#;
this.Blog = http://www.neo-mx.com/blogs/neo-mx
}


"Octavio Hernandez" wrote in message
news:
Mostrar la cita
#9 Misael Monterroca
20/06/2006 - 19:08 | Informe spam
Ps mira, leyendo la especificación de Visual Csharp:

19.1.1 The as operator
The as operator can be used with a type parameter T as the right hand side
only if T is known to be a reference type (§20.7). This restriction is
required because the value null might be returned as a result of the
operator.

class X
{
public T F<T>(object o) where T: Attribute {
return o as T; // Ok, T has a class
constraint
}

public T G<T>(object o) {
return o as T; // Error, unconstrained T
}
}



Entonces Internamente existe la comprobación de "x is eltipo", entonces, lo
único que estamos haciendo seria "ahorrarnos" esa comprobación, sin embargo
eso nos lleva a la comprobación del NULL, lo cual, se puede resolver si
zero18pub supiera EXACTAMENTE en donde está el control :D, pero entonces, ya
no necesitaria el "AS" ya que entonces podria hacer un cast directo,
jajajajajaja, que lio :D




{
this.Saludo = Saludos!
this.Nombre = Misael Monterroca | Microsoft MVP C#;
this.Blog = http://www.neo-mx.com/blogs/neo-mx
}


"Octavio Hernandez" wrote in message
news:
Mostrar la cita
#10 Daniel A. Calvin
21/06/2006 - 02:39 | Informe spam
Hola Octavio

Mira el codigo msil de un a y otra opción.

Sorpresaaaa el operador as es mas barato que el is

Tu código:
if (ctrl is RadioButtonList)
Mostrar la cita
El Msil, mas o menos de tu codigo:
IL_xxx7: isinst RadioButtonList
IL_xxxc: brfalse.s IL_xxzz
IL_xxxe: ldloc.0
IL_xxxf: castclass RadioButtonList // Esto, al hacer el cast hace
comprobación de tipo.

Este metodo hace que el framework chequee dos veces el tipo una por el is y
otra por el cast.

El código de Misael
Mostrar la cita
El Msil, mas o menos de su codigo:
IL_xxx7: isinst RadioButtonList
IL_xxxc: stloc.1
IL_xxxd: ldloc.1
IL_xxxe: brfalse.s IL_xxzz
IL_xx10: ldloc.1
IL_xx11: callvirt instance lo que sea RadioButtonList::Loquesea // Invoca
sin volver a chequear tipo

Esto lo pueden ver facilmente si escriben el ejemplito y luego miran el
codigo MSIL generado.

Saludos

Daniel Calvin
MCP


"Octavio Hernandez" escribió en el mensaje
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida