Foros del Web » Programación para mayores de 30 ;) » .NET »

viewstate

Estas en el tema de viewstate en el foro de .NET en Foros del Web. Hola a tod@s! Necesito usar una variable global en mi aplicación, pero no con Session, necesitaría que no se perdiese al hacer postback pero sí ...
  #1 (permalink)  
Antiguo 07/06/2004, 10:41
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 1 mes
Puntos: 1
Pregunta viewstate

Hola a tod@s!
Necesito usar una variable global en mi aplicación, pero no con Session, necesitaría que no se perdiese al hacer postback pero sí al hacer Response.Redirect, como con viewstate, el problema es que sólo consigo almacenar en viewstate variables tipo string y yo necesito almacenar un dataset e incluso un objeto de una clase "Usuario".

El error que me da es este:
"Debe marcar el tipo como Serializable o establecer un elemento TypeConverter distinto de ReferenceConverter en el estado de vista."

Alguna idea??

Saludos!!
  #2 (permalink)  
Antiguo 07/06/2004, 11:55
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Scho... estas seguro que cuando recuperas de tu viewstate el dataset lo éstas tambien conviertiendo ??

Ejemplo

Dim ds As DataSet = CType(ViewState("Nombre"), DataSet)

Con ello recuperas el viewstate diciendo que es un dataset.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 07/06/2004, 12:17
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 1 mes
Puntos: 1
RootK, la verdad es que no lo hacía, seguro que también me hacía falta, pero el error lo da en la asignación y por cierto que no era un dataset, es un dataview (me confundí, perdón), con el dataset parece que sí va, pero con un dataView o con cualquiera de las clases que tenga yo no funciona ?¿

Con sólo esto:
Código:
Dim ds1 As New DataView
viewState("ds") = ds1
Ya me da el siguiente error:
"Debe marcar el tipo 'System.Data.DataView' como Serializable o establecer un elemento TypeConverter distinto de ReferenceConverter en el estado de vista."

A ver si me echais un cable. Gracias
  #4 (permalink)  
Antiguo 08/06/2004, 16:28
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Mira.. por lo que he sabido , guardar propiamente un dataview en viewstate no es posible ya que no implementa la interfaz ISerializable además de que no almacena otra cosa mas que información filtrada.., lo que te recomiendo en tu caso es guardar en viewstate en un datatable y despues aplicarle el dataview.

Saludo2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #5 (permalink)  
Antiguo 09/06/2004, 03:18
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 1 mes
Puntos: 1
Ok muchas gracias RootK
  #6 (permalink)  
Antiguo 09/06/2004, 03:33
Avatar de GeRuNdIo  
Fecha de Ingreso: marzo-2004
Ubicación: Sanlúcar de Barrameda, Cádiz
Mensajes: 232
Antigüedad: 20 años, 1 mes
Puntos: 2
Hola,
Te propongo una solución y, a la vez, espero que alguien me diga si es o no conveniente hacerlo....
Para usar variables globales y mantener su valor yo utilizo un módulo donde las declaro del tipo

Public loquesea as New tipovble

Así puedo usar esa variable desde cualquier form y no pierden su valor en las recargas de página. Si quieres inicializarla en alguna página, al cargar la página (Private Sub Page_Load(....) ) con el método IsPostBack realizas la inicialización que quieras.

Espero que te sirva para algo y si alguien me puede dar su opinion acerca de este uso, que me lo comente por favor.

Saludos!!!
__________________
Una buena forma de sacar las castañas del fuego sin quemarse: LEE FOROSDELWEB..... :si:
------
F.P.R. MCAD .NET
  #7 (permalink)  
Antiguo 09/06/2004, 05:12
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 1 mes
Puntos: 1
Pues es bueno idea GeRuNdIo, como tú dices no sé si será adecuado o no pero por lo menos sí que es eficaz; a ver si alguien no lo aclara. Gracias por la idea.

Saludos
  #8 (permalink)  
Antiguo 09/06/2004, 08:41
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
De hecho cuando quiero guardar mas variables y encapsularlas para un mejor acceso personalmente hago algo cómo ésto:

Declaro una clase con variables común y corriente:

Cita:
Public Class CustomSettings

Public Variable1 As Integer
Public Variable2 As Boolean
Public Variable3 As Integer
Public Variable4 As String
...
..
End Class
Después manejo la clase que va a ser mi constructor

Cita:
Public Class GlobalSettings

Public GetVariables As New ArrayList


Public Sub New()
...
..
Dim s As New CustomSettings
s.Variable1 = w
s.Variable2 = x
s.Variable3 = y
s.Variable4 = z
Me.GetVariables.Add(CustomSettings)
...


End Sub
Y con ello ya tengo todo en una sola variable (Arraylist) que me guardo ciertos valores que puedo ocupar en cualquier parte de mi proyecto (previamente lo tengo que inicializar para poderlos ocupar)

P.D.- Solo fue un ejemplo general, ya lo demas depende de como uno lo quiera implementar.

Salu2
  #9 (permalink)  
Antiguo 08/02/2005, 06:06
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Hola, se que ya hace tiempo de este post, pero es que estoy intentando hacer algo parecido y no me funciona, si yo creo la variable a comienzo del form, cada vez que hago un postback, éste valor se pierde, y en el viewstate no me deja meterlo porque dice que no es serializable.

Como lo soluciono??podriais ser más específicos???
  #10 (permalink)  
Antiguo 08/02/2005, 08:52
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Sería mas fácil si colocas el código que estas usando.

Salu2
  #11 (permalink)  
Antiguo 09/02/2005, 01:31
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Ya consegui, solucionarlo con tu primera propuesta, la de meter un DataTable en el viewstate, en vez del objeto que usaba. Pero muchas gracias de todos modos.
  #12 (permalink)  
Antiguo 09/02/2005, 09:53
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:07.