Hola
Alguien sabe como puedo almacenar en el viewstate una tabla generada mediante codigo, pues cuando se recarga la pagina pierdo las filas y columnas de esta.
alguna idea?
Gracias
| ||||
| Hola... no puedes guardar una tabla HTML en viewstate ya que no es serializable... simplemente es un wraper HTML Tendrás que generarla en cada postback...
__________________ Nadie roba nada ya que en la vida todo se paga . . . Exentrit - Soluciones SharePoint & Net |
| |||
| Como almacenar el valor de algo sin que se pierda cuando se recarge la pagina Oye amigo si te refires a un objeto System.Data.DataTable y no a una tabla html la puedes conservar los valores de la misma de la siguiente manera:
Código:
El caso es que puedes almacenar todos los valores que quieres en el Session, pero te recomiendo que no abuses de eso, y que cuando ya no necesites almacenar esa informacion ejecutes una limpieza del mismo como el el codigo mostrado en el procedimiento CerrarFormaas
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Introducir aquí el código de usuario para inicializar la página
LlenarDatos()
End Sub
Private Sub LlenarDatos()
If (Me.Page.Session("MiTabla") Is Nothing) Then
'Esto solo ocurre la primera vez que se carga la pagina
Dim Tabla As New Data.DataTable ' Creando la Tabla
Dim ValoresColumnas(1) As Object
'Agregando Columnas a la nueva tabla
Tabla.Columns.Add("Columna1", System.Type.GetType("System.String"))
Tabla.Columns.Add("Columna2", System.Type.GetType("System.String"))
ValoresColumnas(0) = "Valor 1"
ValoresColumnas(1) = "Valor 2"
'Agregando Registros
Tabla.Rows.Add(ValoresColumnas)
ValoresColumnas(0) = "Valor 3"
ValoresColumnas(1) = "Valor 4"
Tabla.Rows.Add(ValoresColumnas)
DataGrid1.DataSource = Tabla
Me.Page.Session("MiTabla") = Tabla
Else
DataGrid1.DataSource = Me.Page.Session("MiTabla")
End If
DataGrid1.DataBind()
End Sub
Private Sub AgregarRegistro()
Dim Tabla As Data.DataTable
Dim ValoresColumnas(1) As Object
Tabla = Me.Page.Session("MiTabla")
ValoresColumnas(0) = "Valor 5"
ValoresColumnas(1) = "Valor 6"
'Agregando Registros
Tabla.Rows.Add(ValoresColumnas)
Me.Page.Session("MiTabla") = Tabla
End Sub
Private Sub CerrarForma()
If (Not Me.Page.Session("MiTabla") Is Nothing) Then
CType(Me.Page.Session("MiTabla"), Data.DataTable).Dispose()
Me.Page.Session.Remove("MiTabla")
End If
End Sub
Private Sub BtnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAgregar.Click
AgregarRegistro()
End Sub
Espero que eso sea lo que necesites |
| ||||
| rootk y rodolfo Gracias por la información proporcionada. En mi caso lo que intentaba guardar es una tabla HTML generada por codigo en el viewstate. Es posible obtener el codigo html de la tabla que es generado en el codebehind???? porque de ser asi podria volver a reescribir la tabla guardando el html Saludos |
| |||
| Pregunta, de la respuesta???????????? cuando se ejecuta el procedimiento Private Sub CerrarForma() If (Not Me.Page.Session("MiTabla") Is Nothing) Then CType(Me.Page.Session("MiTabla"), Data.DataTable).Dispose() Me.Page.Session.Remove("MiTabla") End If End Sub |