Tabla dinamica VB .NET
Que pasa si hago una consulta a una BD y quiero mostrar el resultado en una tabla HTML?
Este es un ejemplo en que partiendo de una tabla de 4 columnas
(vale, podria ser mas dinamica), se genera una tabla
tomando los nombres de columna del propio resultado.
Este es un ejemplo en que partiendo de una tabla de 4 columnas
(vale, podria ser mas dinamica), se genera una tabla
tomando los nombres de columna del propio resultado.
Private Sub consultaDetalle()
'Introducir aquí el código de usuario para inicializar la página
Dim conexion As System.Data.OleDb.OleDbConnection
Dim comando As System.Data.OleDb.OleDbCommand
Dim datos As System.Data.OleDb.OleDbDataReader
Dim tempRow As TableRow
Dim itemTMP As ListItem
Dim caso As String
Dim conString As String
Dim sentencia As String
'establecemos la sentencia
sentencia = "select * from ESTUDIANTES"
Response.Write("Sentencia SQL: " & sentencia)
'String de conexion para una bd access
conString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("Colegio.mdb")
'creamos el objeto conexion
conexion = New OleDbConnection(conString)
'todo lo hacemos en un bloque try-catch
Try
'establecemos conexion
conexion.Open()
Response.Write("OK conexion establecida <br>")
'Creamos el objeto comando
comando = New OleDbCommand(sentencia, conexion)
Response.Write("OK comando creado <br>")
'ejecucion de una consulta
datos = comando.ExecuteReader()
Response.Write("OK comando ejecutado <br>")
Dim tmpItem As ListItem
Dim lblTemp As Label
'If datos.RecordsAffected > 0 Then
Tabla.Visible = True
lblTemp = New Label()
lblTemp.Text = datos.GetName(0)
Tabla.Rows(0).Cells(0).Controls().Add(lblTemp)
lblTemp = New Label()
lblTemp.Text = datos.GetName(1)
Tabla.Rows(0).Cells(1).Controls().Add(lblTemp)
lblTemp = New Label()
lblTemp.Text = datos.GetName(2)
Tabla.Rows(0).Cells(2).Controls().Add(lblTemp)
lblTemp = New Label()
lblTemp.Text = datos.GetName(3)
Tabla.Rows(0).Cells(3).Controls().Add(lblTemp)
'End If
Dim linea As TableCellCollection()
Dim celda As TableCell
Dim i As Integer
i = 0
' Recorremos el resultset y cargamos el combo
Do While datos.Read()
tempRow = New TableRow()
For i = 0 To 3
lblTemp = New Label()
lblTemp.Text = datos.GetValue(i)
celda = New TableCell()
celda.Controls.Add(lblTemp)
tempRow.Controls.Add(celda)
Next
Tabla.Controls().Add(tempRow)
Loop
' en caso de error.. capturamos y mostramos
Catch ex As Exception
Response.Write("Error al acceder a la BD<br>" & ex.Message)
Finally
'en cualquier caso hacemos esto (mal, sin comprobar)
' conexion.Close()
conexion = Nothing
comando = Nothing
End Try
'si la pagina ya se habia cargado antes aparecemos aqui
'Else
'Response.Write("OK, la pagina ya estaba cargada<br>")
'End If
End Sub
pello.io