ASP.NET - ViewState no guarda los datos

 
Vista:

ViewState no guarda los datos

Publicado por Javier Santamaria (312 intervenciones) el 16/07/2007 11:05:38
Hola,

Tengo un pequeño problemilla, estoy desarrollando un aaplicacion para reservar pasajes. El tema es que inicialmente tengo una tabla vacia (asp:table) y un DropDownList. En el DropDownList selecciono el numero de pasajeros y en base a ese numero creo el numero de filas necesarias en la tabla para meter los datos de cada pasajero. Bien el problema es que cuando pincho en el boton de validar y guardar datos la tablae sta vacia, es decir, no me guarda los datos introducidos. Queria saber como solucionar este tema. He oido algo sobre ViewState, pero no se como utilizarlo, ya que la tabla tiene el ViewState = true. Lo que he intentado hacer es:

Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
Me.ViewState.Add("Tabla", PHPassengers)
End Sub

Pero eso me da el siguiente error:

Server Error in '/Concession Form' Application.
Type 'System.Web.UI.WebControls.PlaceHolder' in Assembly 'System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Runtime.Serialization.SerializationException: Type 'System.Web.UI.WebControls.PlaceHolder' in Assembly 'System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable.

A ver si alguien sabe como solucionar esto.

Muchas gracias por adelantado.
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

RE:ViewState no guarda los datos

Publicado por Pablo Iñareta (224 intervenciones) el 16/07/2007 14:38:03
en el viewstate no puedes guardar todo lo que quieras, solo objetos q sean serializables. PHPassengers, que no se q es no debe serlo. Pasa lo mismo con la Session
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ViewState no guarda los datos

Publicado por Javier Santamaria (312 intervenciones) el 16/07/2007 14:40:59
Hola Pablo, gracias por la respuesta. PHPassengers es un place holder. Pero el problema que tengo entonces es:

El caso es que yo creo controles (textbox y
checkbox) en tiempo de ejecucion para crear las filas de una tabla, donde
luego se introduciran datos de pasajeros. Hasta aqui todo bien, el problema
viene cuando le das al boton para enviar la informacion, ya que no puedo
recuperar lo escrito por los clientes en los textbox y checkbox. Es mas,
haciendo ejecucion paso a paso veo que la tabla ni siquiera contiene esos
controles añadidos anteriormente. Por eso necesito guardar los controles
(aunque solo sea su contenido y no el control en si) en el ViewState. Pero
cuando se intentan enviar los datos esos controles no existen, por tanto no
hay forma de recuperarlos para saber cual era su contenido.

Muchas gracias, espero respuetas.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ViewState no guarda los datos

Publicado por Pablo Iñareta (224 intervenciones) el 17/07/2007 09:09:26
a ver, ahi va lo primero que se me ha ocurrido, create unos campos hidden que corran en el servidor, y mete en ellos, con javascript, que tendras que añadir a los controles que creas dinamicamente, con el evento onchange por ejemplo, el valor de dichos controles. De esta manera siempre lo podrás recuperar. Guarda por ejemplo, pares del tipo nombreDeControl|valor separados por comas, de esta manera lo tendras en el viewstate siempre.
Estoy convencido que asi tendrías el resultado que buscas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ViewState no guarda los datos

Publicado por Javier Santamaria (312 intervenciones) el 17/07/2007 10:58:17
Gracias por la respuesta Pablo, probare a ver que tal porque no estoy muy suelto en javascript. Mas dudas ya preguntare
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ViewState no guarda los datos

Publicado por Javier Santamaria (312 intervenciones) el 18/07/2007 17:01:00
Hola de nuevo,
Ya consigo añadir mis filas dinamicamente y puedo guardar el estado de las mismas en el viewstate. Cuando se ve la solucion parece sencilla, pero hasta que no llegas a ella no es tan obvia. Voy a contar como lo he hecho por si a alguien le viene bien. Lo he conseguido de la siguiente forma:

Aqui lo que hago es añadir una fila nueva y luego guardo el estado de la tabla en el ViewState.
Protected Sub BtnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnAdd.Click
AddNewRow(TblPassengers)
SaveTblPassengers()
End Sub

Aqui me leo el ViewState para meterlo en la tabla y recuperar la informacion que teniamos en ella.
Protected Sub Page_PreLoad(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreLoad
Bucles de lectura (Algo larguillos, por eso no los pongo, pero si se necesitan pedirlos)
End Sub

La idea del codigo es que veais cual es la secuencia para llenar y recuperar el ViewState.

Ahora, como no podia ser de otra forma, tengo la siguiente duda:

Al crear los controles dinamicamente no puedo crear procedimientos que manejen sus eventos, ya que al no estar declarados estaticamente no se reconocen. Es decir, yo dinamicamente me creo un control llamado "RdoLeadtbl3", pero no puedo definir en mi archivo .aspx.vb un procedimiento que sea:

Protected Sub RdoLeadtbl3_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RdoLeadtbl3.CheckedChanged

Esto me dice que no se puede compilar, porque no esta definido RdoLeadtbl3 (recordad que lo defino en ejecucion). Por tanto mi problema es: yo voy añadiendo pasajeros a la tabla. De estos pasajeros solo uno puede ser principal. Esto obviamente lo controlo con unos RadioButton (no puede ser RadioButtonList porque quiero un boton por fila y no una lista de botones por fila). El problema que me encuentro es que no se como capturar el evento CheckedChanged de estos RadioButton para cambiar el pasajero principal segun se seleccione uno u otro. Actualmente me pone el puntito en todos los que pinches y lo que deberia de hacer es cambiarlo. Por tanto la pregunta es:

¿Como se capturan los evetos de los controles creados dinamicamente?

Agradezco cualquier ayuda.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ViewState no guarda los datos

Publicado por Javier Santamaria (312 intervenciones) el 25/07/2007 12:36:56
Hola de nuevo, ya añado los eventos y funciona todo. Si alguien necesita saber como lo he hecho que me lo pida y le pongo el codigo.

Gracias por todo, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar