ASP.NET - Rellenar un gridviwe dinamicamente

 
Vista:

Rellenar un gridviwe dinamicamente

Publicado por Idoia (3 intervenciones) el 20/11/2008 13:09:04
Hola, buenas a todos:

Tengo un problemilla a la hora de crear un gridview de forma dinamica y espero que alguien pueda ayudarme. Es algo dificil de explicar asi que intentaré hacerlo lo mejor posible.
En mi base de datos tengo 3 tablas, seccion, campo y contenido. Por cada elemento de seccion creo un gridview, que relleno con todos los elementos de campo (para las columnas y filas) y los datos de estos se rellenan con la tabla contenido.

La primera parte no me supone ningun problem, aqui pongo el codigo:

Private Sub EstructuraGridViewCrear()
Dim iParteDiario As LogicaNegocio.IParteDiario
Dim lstSecciones As New List(Of Entidades.clsSeccionParte)
Dim seccionParte As New Entidades.clsSeccionParte
Dim lbl As Label
Dim gv As GridView
Dim strMsj As String = "Error al cargar las secciones."
Try
iParteDiario = New LogicaNegocio.clsImplementacionParteDiario
lstSecciones = iParteDiario.SeccionParteLeerPorIdObra(Session("IdObra").ToString)
If lstSecciones.Count = 0 Then
strMsj = "El parte de la obra no está configurado."
Response.Redirect("../../../Mensaje.aspx?msj=" & strMsj & "&tp=0")
Else
For i = 0 To lstSecciones.Count - 1
lbl = New Label
gv = New GridView()
gv.ID = "gvSeccionesParte"
'AddHandler gv.RowDataBound, AddressOf gv_RowDataBound
lbl.Text = lstSecciones(i).Descripcion
SeccionesRellenar(gv, lstSecciones(i).IdSeccionParte)
CamposRellenar(gv, lstSecciones(i).IdSeccionParte)
phParte.Controls.Add(gv)
Next
End If
Catch ex As Exception
strMsj = "Error al cargar datos."
Response.Redirect("../../../Mensaje.aspx?msj=" & strMsj & "&tp=0")
End Try
End Sub

Sin embargo, la segunda parte es la que me presenta el problema que quiero tratar (aun no llegue a la tercera parte) El codigo de esta segunda parte es el siguiente:

Private Sub SeccionesRellenar(ByVal gv As GridView, ByVal idSeccionparte As Integer)
Dim iParteDiario As LogicaNegocio.IParteDiario
Dim lstCampoSeccion As New List(Of Entidades.clsCampoSeccion)
Dim campoSeccion As New Entidades.clsCampoSeccion
Dim strMsj As String
Dim tf As TemplateField
Dim tb As TextBox
Try
iParteDiario = New LogicaNegocio.clsImplementacionParteDiario
lstCampoSeccion = iParteDiario.CampoSeccionLeerPorIDSeccionParte(idSeccionparte)
If lstCampoSeccion.Count = 0 Then
strMsj = "El parte de la obra no está configurado."
Response.Redirect("../../../Mensaje.aspx?msj=" & strMsj & "&tp=0")
Else
For i = 0 To lstCampoSeccion.Count - 1
tf = New TemplateField
tb = New TextBox
tf.HeaderText = lstCampoSeccion(i).Descripcion
tf.InsertItemTemplate.InstantiateIn(tb)
tb.ID = "txtContenidoGV"
tb.MaxLength = 100
tf.ItemStyle.Width = lstCampoSeccion(i).AnchoColumna
gv.Columns.Add(tf)
Next
End If
Catch ex As Exception
strMsj = "Error al cargar datos."
Response.Redirect("../../../Mensaje.aspx?msj=" & strMsj & "&tp=0")
End Try
End Sub

y el problema se presenta en la fila "tf.InsertItemTemplate.InstantiateIn(tb)" que me lanza un mensaje de error que me dice: "Referencia a objeto no establecida como instancia de un objeto"

La verdad es que he mirado por internet un montón pero no encuentro la solución, pero que alguien pueda ayudarme. No pongo el codigo de la tercera parte porque aun no se ni si funciona, puesto que no he tenido oportunidad de ptrobarlo, sin embargo, si alguien lo necesita, no tengo problemas en agregarlo.

muchas gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder