Como crear una tabla dinamicamente desde el servidor con ASP.NET
Hay veces que tenemos que mostrar en una pagina web una tabla cuyo numero de filas o columnas depende de los datos que hay una base de datos. Esta tabla se puede usar para mostrar datos o para recogerlos pues a cada columna de la tabla le podemos poner un label o etiqueta y un textbox o caja de texto. Lo mejor es que lo veais con un codigo de ejemplo vb en el Page_Load que os generara una tabla con 10 filas y 2 columnas para recoger el valor de 10 registros.
Primero tenemos que definir en la pagina .aspx un control table de la siguiente manera dentro del Body de la pagina:
<form id="Form1" method="post" runat="server">
<asp:Table ID="tContenido" Width="100%" Runat="server"></asp:Table>
<br>
</form>
A continuacion generamos la tabla desde el codigo de servidor de la siguiente forma en el Page_Load :
'Declaracion
Dim iCont As
Integer
Dim objRow As TableRow
' una fila
Dim objCell As TableCell
' una celda
Dim ControlLabel As Label Dim ControlText As TextBox
'Codigo
tContenido.Rows.Clear()
' vaciamos lista de filas
'A) - Cabecera
objRow =
New TableRow
'Creamos fila
objCell =
New TableCell
'Creamos y definimos celda
objCell.ColumnSpan = 2 ' tendra 2 columnas
objCell.HorizontalAlign = HorizontalAlign.Center
ControlLabel =
New Label
'Creamos label
ControlLabel.Text = "Cabecera de tabla"
objCell.Controls.Add(ControlLabel)
'Añadimos control a la celda
objRow.Cells.Add(objCell)
'añadimos celda a la linea
tContenido.Rows.Add(objRow)
'añadimos linea a la tabla
For iCont = 1 To 10 ' definimos 10 filas
objRow =
New TableRow
'Creamos fila
'-Columna 1
objCell =
New TableCell
'Creamos y definimos celda
With objCell
.HorizontalAlign = HorizontalAlign.Right
.Width = Unit.Percentage(25)
End
With
ControlLabel =
New Label
'Creamos label
ControlLabel.Text = "Registro " & CStr(iCont) & ":"
objCell.Controls.Add(ControlLabel)
objRow.Cells.Add(objCell)
'-Columna 2
objCell =
New TableCell
'Creamos y definimos celda
With objCell
.HorizontalAlign = HorizontalAlign.Left
.Width = Unit.Percentage(75)
End
With
ControlText = New TextBox
With
ControlText.ID = "Cajatexto" &
CStr(iCont)
' No hay propiedada name!
.MaxLength = 50
End
With
slCampos.Add(ControlText.ID)
objCell.Controls.Add(ControlText)
objRow.Cells.Add(objCell)
'-Por fin, la linea a la tabla
tContenido.Rows.Add(objRow)
'añadimos linea a la tabla
Next
Gracias a TFS por la idea.
Espero que os sirva
Sergio