Principales respuestas
Como acceder a un elemento dinamico

Pregunta
-
Buenas, estoy desarrollando una aplicación en asp.net y necesito acceder a un control dinámico, hasta ahora tengo lo siguiente pero me devuelve un null porque no encuentra el objeto.
Os pongo un ejemplo:
<label id="cant_1_1" runat="server" text="" height="20">H</label> <label id="cant_1_2" runat="server" text="" height="20">O</label> <label id="cant_1_3" runat="server" text="" height="20">L</label> <label id="cant_2_1" runat="server" text="" height="20">A</label> <label id="cant_2_2" runat="server" text="" height="20">!</label>
Estas etiquetas se crean de forma dinamica poniendo como id un texto fijo + un identificador de posicion.
El caso es que aun teniendo el runat="server" desde el correspondiente no puedo acceder al elemento ya que no puedo poner Id como tal sino que para que os hagais una idea si quiero acceder a la etiqueta "cant_1_3" para saber que tiene como valor L pondriamos algo como esto en el cs
string letra = cant_1_3.InnerText;
El caso es que yo no se que es "cant_1_3" lo único que se es que es la etiqueta que es identificada por la pos1 y la pos2 que son variables
i
int pos1 = 1; int pos2 = 3; etiqueta = "cant_" + pos1 + "_" + pos2;
¿ Alguna sugerencia para recoger este elemento dinamico ?
Gracias
Respuestas
-
para ello debes hacer un FindControl().
si las etiquetas NO están en un contenedor como un panel haces lo siguiente.
var etiqueta = this.FindControl("cant_1_3");
si está dentro de un panel por ejemplo
var etiqueta = this.Panel1.FindControl("cant_1_3");
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Marcado como respuesta Veleras jueves, 16 de julio de 2015 20:54
Todas las respuestas
-
para ello debes hacer un FindControl().
si las etiquetas NO están en un contenedor como un panel haces lo siguiente.
var etiqueta = this.FindControl("cant_1_3");
si está dentro de un panel por ejemplo
var etiqueta = this.Panel1.FindControl("cant_1_3");
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Marcado como respuesta Veleras jueves, 16 de julio de 2015 20:54
-
hola
una duda, porque no usas el <asp:Label > ? porque tiene que ser un html con el runat=server
es que el label por lo que entiendo no interviene en el post por eso puede que no acceda al control
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta fredsale jueves, 16 de julio de 2015 16:57
-
-
Uso label por comodidad a la hora de trabajar con los CSS; de todas formas no necesito que vaya en el post, es una etiqueta que se modifica desde el correspondiente archivo cs, no es una pagina que se envíe a otro lugar y vaya arrastrando esos datos ( entiendo que a eso te refieres con que intervenga en el post ), sino que solo actualiza datos en una base de datos.
La respuesta me fue muy util, muchas gracias.