Posteado por: edeortuzar | 05/03/2013

Trabajar con tablas HTML desde el code-behind con C# .NET



Para acceder a un control HTML desde el code-behind debemos primero establecer la propiedad id del control y la propiedad runat="server".

<table id="Totales" runat="server">

Luego podemos tener distintos caminos para poder llegar a un label, por ejemplo, que se encuentre dentro de dicha tabla.

Tenemos que ir en escala para adentro de la tabla, esto quiere decir, primero ubicar la fila, luego la celda y luego el control.

El código sería:

HtmlTableRow tr = Totales.FindControl("tr5") as HtmlTableRow;

HtmlTableCell td = tr.FindControl("td5") as HtmlTableCell;
Label lbl = td.FindControl("lblParemeter5") as Label;

También puede darse la situación en la que las tablas, celdas y controles se generen dinámicamente por lo que no tenemos fija la profundidad de la tabla, por lo que deberíamos tener que agregar la siguiente clase estática a nuestra página para así poder buscar el control por el id:

public static class BuscadorControles
{
public static Control FindById(this Page p, string id)
{
return FindByIdRecursive(p, id);
}

private static Control FindByIdRecursive(Control root, string id)
{
if (root.ID == id)
return root;

foreach (Control c in root.Controls)
{
Control c2 = FindByIdRecursive(c, id);
if (c2 != null)
return c2;
}

return null;
}

}

Para luego directamente llamar a la función de la siguiente manera:

Label lbl = FindById("lblParameter5") as Label;

Espero que les sirva.

Saludos.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: