• Domingo 22 de Diciembre de 2024, 18:33

Autor Tema:  Viewstate No Guarda Los Datos  (Leído 5129 veces)

Javier Santamaria

  • Miembro MUY activo
  • ***
  • Mensajes: 142
    • Ver Perfil
Viewstate No Guarda Los Datos
« en: Lunes 16 de Julio de 2007, 11:31 »
0
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.

cuajoa

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
    • http://www.daskate.com.ar/cuajoa
Re: Viewstate No Guarda Los Datos
« Respuesta #1 en: Lunes 16 de Julio de 2007, 20:26 »
0
mirá al agregar datos a una base o hacer una consulta o lo que sea que necesite traer o dejar datos, requiere de una "actualizacion", o sea lo que tenes que hacer es darle un Update o algo parecido, pero la tabla no tiene update, creo, lo que podes usar es un gridview, pero es un poco mas complejo que una tabla.

El view State sirve para mantener el estado entre las idas y vueltas al servidor.
Por ejemplo, tenes un formulario que el usuario debe llenar y cuando presiona el boton "Submit" del formulario entran en juego los validadores, si uno de estos falla la pagina le avisa que tiene un error, en esa accion se genera una ida y vuelta al servidor y aca es donde entra en juego el view state, que sirve para que el pobre usuario no tenga que escribir todos los campos nuevamente.

Saludos
[size=109]Çu@Jö@[/size]
   

Javier Santamaria

  • Miembro MUY activo
  • ***
  • Mensajes: 142
    • Ver Perfil
Re: Viewstate No Guarda Los Datos
« Respuesta #2 en: Martes 17 de Julio de 2007, 11:13 »
0
Hola cuajoa, muchas gracias por responder.

No se si me explique bien.

Mi problema es que los datos no existen, son datos nuevos introducidos por el usuario, por eso no puedo hacer ninguna consulta a la BD para luego modificar los datos de la tabla o gridview con un update. Lo que yo necesito es crear una tabla (me da igual tabla que gridvew, que formview) que sea capaz de añadir o eliminar filas dinamicamente guardando los datos ya escritos por el ususario. Te pongo un ejemplo:

1. Al principio la tabla esta vacia (solo tiene la cabecera) porque no tengo ningun pasajero.

Campo1   Campo2   Campo3   Campo4   Campo5


2. El usuario decide (con el dropdownlist) poner 3 pasajeros. La tabla tendria tres filas.

Campo1          Campo2         Campo3        Campo4       Campo5
Pasajero1   Pasajero1   Pasajero1   Pasajero1   Pasajero1
Pasajero2   Pasajero2   Pasajero2   Pasajero2   Pasajero2
Pasajero3   Pasajero3   Pasajero3   Pasajero3   Pasajero3


3. El usuario decide meter dos pasjeros mas. La tabla deberia de mostrar 5 filas (3 ya rellenas y 2 vacias).

Campo1          Campo2         Campo3        Campo4       Campo5
Pasajero1   Pasajero1   Pasajero1   Pasajero1   Pasajero1
Pasajero2   Pasajero2   Pasajero2   Pasajero2   Pasajero2
Pasajero3   Pasajero3   Pasajero3   Pasajero3   Pasajero3
(Vacio)             (Vacio)       (Vacio)         (Vacio)           (Vacio)
(Vacio)             (Vacio)       (Vacio)         (Vacio)           (Vacio)


4. El usuario decide dejar solo dos pasajeros. La tabla deberia dejar las filas de los pasajeros 1 y 2, borrando las demas.

Campo1          Campo2         Campo3        Campo4       Campo5
Pasajero1   Pasajero1   Pasajero1   Pasajero1   Pasajero1
Pasajero2   Pasajero2   Pasajero2   Pasajero2   Pasajero2


5. Si decidiera meter otros dos pasajeros, deberian aparecer otras dos filas vacias (no la tercera con la informacion del pasajero3 anteriormente introducida).

Campo1          Campo2         Campo3        Campo4       Campo5
Pasajero1   Pasajero1   Pasajero1   Pasajero1   Pasajero1
Pasajero2   Pasajero2   Pasajero2   Pasajero2   Pasajero2
(Vacio)             (Vacio)       (Vacio)         (Vacio)           (Vacio)
(Vacio)             (Vacio)       (Vacio)         (Vacio)           (Vacio)


Espero haberme explicado mejor ahora.

Alguien sabe como manejar el ViewState para hacer funcionar esta tabla. Tener en cuenta que el ViewState no guarda contrles, por tanto no guarda los textbox donde introduzco la informacion de los pasajeros, solo guarda el texto del textbox, pero no el control completo.

Gracias de nuevo.

Saludos

cuajoa

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
    • http://www.daskate.com.ar/cuajoa
Re: Viewstate No Guarda Los Datos
« Respuesta #3 en: Martes 17 de Julio de 2007, 20:22 »
0
Mirá yo hice algo parecido a eso, y lo que el usuario tenia que conpletar tres textbox, y los mostraba con un gridview, y automáticamente cuando lo presionaba el boton se actualizaba el gridview, sin tener en cuenta el viewstate.

Y el mismo gridview te permite eliminar y modificar los datos, y escribiendo muy poco codigo.

Si queres te paso la pagina que hice y te fijas.

Saludos
[size=109]Çu@Jö@[/size]
   

Javier Santamaria

  • Miembro MUY activo
  • ***
  • Mensajes: 142
    • Ver Perfil
Re: Viewstate No Guarda Los Datos
« Respuesta #4 en: Miércoles 18 de Julio de 2007, 10:43 »
0
EDITADO

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.

Javier Santamaria

  • Miembro MUY activo
  • ***
  • Mensajes: 142
    • Ver Perfil
Re: Viewstate No Guarda Los Datos
« Respuesta #5 en: Miércoles 25 de Julio de 2007, 13:00 »
0
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.

YiroMex

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Viewstate No Guarda Los Datos
« Respuesta #6 en: Miércoles 9 de Abril de 2008, 23:34 »
0
Citar
Javier Santamaria Publicado: Julio 25, 2007 01:00 pm   


Miembro MUY activo


Grupo: Miembros Veteranos
Mensajes: 122
Miembro nº: 54735
Registrado: May 02, 2007



 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. 


Estimado Javier,
Podrias proporcionar el codigo que te funciono
Saludos!

Javier Santamaria

  • Miembro MUY activo
  • ***
  • Mensajes: 142
    • Ver Perfil
Re: Viewstate No Guarda Los Datos
« Respuesta #7 en: Martes 15 de Abril de 2008, 12:44 »
0
Ahi te va, es un pelin largo:


Código: Text
  1. 'Creamos la nueva fila
  2. Private Sub AddNewRow(ByRef table As Table)
  3.  
  4.         Dim tabindex As Integer
  5.         Dim row As TableRow
  6.         Dim cell As TableCell
  7.         Dim con As CheckBox
  8.         row = TblPassengers.Rows.Item(table.Rows.Count - 1)
  9.         cell = row.Cells.Item(row.Cells.Count - 1)
  10.         con = cell.FindControl("CBReturntbl" & table.Rows.Count - 1.ToString)
  11.  
  12.         If con Is Nothing Then
  13.             tabindex = 35
  14.         Else
  15.             tabindex = con.TabIndex
  16.         End If
  17.  
  18.         Dim emptyrow As New TableRow
  19.  
  20.         Dim lead As New TableHeaderCell
  21.         Dim rdolead As New RadioButton
  22.         rdolead.ID = "RdoLeadtbl" & table.Rows.Count.ToString
  23.         rdolead.TabIndex = tabindex + 1
  24.         lead.Controls.Add(rdolead)
  25.         emptyrow.Cells.Add(lead)
  26.  
  27.         Dim title As New TableCell
  28.         Dim ddltitle As New DropDownList
  29.         ddltitle.ID = "DDLTitletbl" & table.Rows.Count.ToString
  30.         ddltitle.Items.Add("Mr")
  31.         ddltitle.Items.Add("Ms")
  32.         ddltitle.Items.Add("Mrs")
  33.         ddltitle.Items.Add("Miss")
  34.         ddltitle.Items.Add("Master")
  35.         ddltitle.Items.Add("Doctor")
  36.         ddltitle.Items.Add("Lady")
  37.         ddltitle.Items.Add("Sir")
  38.         ddltitle.Items.Add("Rev.")
  39.         ddltitle.SelectedIndex = 0
  40.         ddltitle.TabIndex = tabindex + 2
  41.         title.Controls.Add(ddltitle)
  42.         emptyrow.Cells.Add(title)
  43.  
  44.         Dim init As New TableCell
  45.         Dim txtinit As New TextBox
  46.         txtinit.ID = "TxtInittbl" & table.Rows.Count.ToString
  47.         txtinit.TabIndex = tabindex + 3
  48.         init.Controls.Add(txtinit)
  49.         emptyrow.Cells.Add(init)
  50.  
  51.         Dim surname As New TableCell
  52.         Dim txtsurname As New TextBox
  53.         txtsurname.ID = "TxtSurnametbl" & table.Rows.Count.ToString
  54.         txtsurname.TabIndex = tabindex + 4
  55.         surname.Controls.Add(txtsurname)
  56.         emptyrow.Cells.Add(surname)
  57.  
  58.         Dim age As New TableCell
  59.         Dim txtage As New TextBox
  60.         txtage.ID = "TxtAgetbl" & table.Rows.Count.ToString
  61.         txtage.TabIndex = tabindex + 5
  62.         age.Controls.Add(txtage)
  63.         emptyrow.Cells.Add(age)
  64.  
  65.         Dim ptcard As New TableCell
  66.         Dim txtptcard As New TextBox
  67.         txtptcard.ID = "TxtPTCardtbl" & table.Rows.Count.ToString
  68.         txtptcard.TabIndex = tabindex + 6
  69.         ptcard.Controls.Add(txtptcard)
  70.         emptyrow.Cells.Add(ptcard)
  71.  
  72.         Dim outward As New TableHeaderCell
  73.         Dim cboutward As New CheckBox
  74.         cboutward.ID = "CBOutwardtbl" & table.Rows.Count.ToString
  75.         cboutward.TabIndex = tabindex + 7
  76.         outward.Controls.Add(cboutward)
  77.         emptyrow.Cells.Add(outward)
  78.  
  79.         Dim returns As New TableHeaderCell
  80.         Dim cbreturn As New CheckBox
  81.         cbreturn.ID = "CBReturntbl" & table.Rows.Count.ToString
  82.         cbreturn.TabIndex = tabindex + 8
  83.         returns.Controls.Add(cbreturn)
  84.         emptyrow.Cells.Add(returns)
  85.  
  86.         table.Rows.Add(emptyrow)
  87.  
  88.         BtnAdd.TabIndex = tabindex + 9
  89.         BtnSubmit.TabIndex = tabindex + 10
  90.         BtnClear.TabIndex = tabindex + 11
  91.     End Sub
  92.  

Código: Text
  1. 'Guardamos el valor en viewstate
  2. Private Sub SaveTblPassengers()
  3.         Dim r As TableRow
  4.         Dim c As TableCell
  5.         Dim con As Control
  6.         Dim i As Integer
  7.         For i = 0 To TblPassengers.Rows.Count - 1
  8.             r = TblPassengers.Rows.Item(i)
  9.             For Each c In r.Cells
  10.                 For Each con In c.Controls
  11.                     Dim name As String
  12.                     name = con.ID
  13.                     Select Case name
  14.                         Case "LblLeadtbl"
  15.                             Dim lbl As New Label
  16.                             lbl = con.FindControl("LblLeadtbl")
  17.                             Me.ViewState.Add("LblLeadtbl", lbl.Text)
  18.                         Case "LblTitletbl"
  19.                             Dim lbl As New Label
  20.                             lbl = con.FindControl("LblTitletbl")
  21.                             Me.ViewState.Add("LblTitletbl", lbl.Text)
  22.                         Case "LblInittbl"
  23.                             Dim lbl As New Label
  24.                             lbl = con.FindControl("LblInittbl")
  25.                             Me.ViewState.Add("LblInittbl", lbl.Text)
  26.                         Case "LblSurnametbl"
  27.                             Dim lbl As New Label
  28.                             lbl = con.FindControl("LblSurnametbl")
  29.                             Me.ViewState.Add("LblSurnametbl", lbl.Text)
  30.                         Case "LblAgetbl"
  31.                             Dim lbl As New Label
  32.                             lbl = con.FindControl("LblAgetbl")
  33.                             Me.ViewState.Add("LblAgetbl", lbl.Text)
  34.                         Case "LblPTCardtbl"
  35.                             Dim lbl As New Label
  36.                             lbl = con.FindControl("LblPTCardtbl")
  37.                             Me.ViewState.Add("LblPTCardtbl", lbl.Text)
  38.                         Case "LblOutwardtbl"
  39.                             Dim lbl As New Label
  40.                             lbl = con.FindControl("LblOutwardtbl")
  41.                             Me.ViewState.Add("LblOutwardtbl", lbl.Text)
  42.                         Case "LblReturntbl"
  43.                             Dim lbl As New Label
  44.                             lbl = con.FindControl("LblReturntbl")
  45.                             Me.ViewState.Add("LblReturntbl", lbl.Text)
  46.                         Case "RdoLeadtbl" & i.ToString
  47.                             Dim rdo As New RadioButton
  48.                             rdo = con.FindControl("RdoLeadtbl" & i.ToString)
  49.                             Me.ViewState.Add("RdoLeadtbl" & i.ToString, rdo.Checked)
  50.                             Me.ViewState.Add("RdoLeadtbl" & i.ToString & "TabIndex", rdo.TabIndex)
  51.                         Case "DDLTitletbl" & i.ToString
  52.                             Dim ddl As New DropDownList
  53.                             ddl = con.FindControl("DDLTitletbl" & i.ToString)
  54.                             Me.ViewState.Add("DDLTitletbl" & i.ToString, ddl.SelectedIndex)
  55.                             Me.ViewState.Add("DDLTitletbl" & i.ToString & "TabIndex", ddl.TabIndex)
  56.                         Case "TxtInittbl" & i.ToString
  57.                             Dim txt As New TextBox
  58.                             txt = con.FindControl("TxtInittbl" & i.ToString)
  59.                             Me.ViewState.Add("TxtInittbl" & i.ToString, txt.Text)
  60.                             Me.ViewState.Add("TxtInittbl" & i.ToString & "TabIndex", txt.TabIndex)
  61.                         Case "TxtSurnametbl" & i.ToString
  62.                             Dim txt As New TextBox
  63.                             txt = con.FindControl("TxtSurnametbl" & i.ToString)
  64.                             Me.ViewState.Add("TxtSurnametbl" & i.ToString, txt.Text)
  65.                             Me.ViewState.Add("TxtSurnametbl" & i.ToString & "TabIndex", txt.TabIndex)
  66.                         Case "TxtAgetbl" & i.ToString
  67.                             Dim txt As New TextBox
  68.                             txt = con.FindControl("TxtAgetbl" & i.ToString)
  69.                             Me.ViewState.Add("TxtAgetbl" & i.ToString, txt.Text)
  70.                             Me.ViewState.Add("TxtAgetbl" & i.ToString & "TabIndex", txt.TabIndex)
  71.                         Case "TxtPTCardtbl" & i.ToString
  72.                             Dim txt As New TextBox
  73.                             txt = con.FindControl("TxtPTCardtbl" & i.ToString)
  74.                             Me.ViewState.Add("TxtPTCardtbl" & i.ToString, txt.Text)
  75.                             Me.ViewState.Add("TxtPTCardtbl" & i.ToString & "TabIndex", txt.TabIndex)
  76.                         Case "CBOutwardtbl" & i.ToString
  77.                             Dim cb As New CheckBox
  78.                             cb = con.FindControl("CBOutwardtbl" & i.ToString)
  79.                             Me.ViewState.Add("CBOutwardtbl" & i.ToString, cb.Checked)
  80.                             Me.ViewState.Add("CBOutwardtbl" & i.ToString & "TabIndex", cb.TabIndex)
  81.                         Case "CBReturntbl" & i.ToString
  82.                             Dim cb As New CheckBox
  83.                             cb = con.FindControl("CBReturntbl" & i.ToString)
  84.                             Me.ViewState.Add("CBReturntbl" & i.ToString, cb.Checked)
  85.                             Me.ViewState.Add("CBReturntbl" & i.ToString & "TabIndex", cb.TabIndex)
  86.                     End Select
  87.                 Next
  88.             Next
  89.         Next
  90.     End Sub
  91.  

Código: Text
  1. 'Cargamos los valores de vuelta del viewstate
  2. Protected Sub Page_PreLoad(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreLoad
  3.         Dim out As Boolean = False
  4.         Dim i As Integer = 2
  5.         While Not out
  6.             If Not ViewState("RdoLeadtbl" & i.ToString) Is Nothing Then
  7.                 Dim r As New TableRow
  8.  
  9.                 Dim lead As New TableHeaderCell
  10.                 Dim rdolead As New RadioButton
  11.                 rdolead.ID = "RdoLeadtbl" & i.ToString
  12.                 rdolead.Checked = Convert.ToBoolean(ViewState("RdoLeadtbl" & i.ToString).ToString)
  13.                 rdolead.TabIndex = Convert.ToInt32(ViewState("RdoLeadtbl" & i.ToString & "TabIndex").ToString)
  14.                 lead.Controls.Add(rdolead)
  15.                 r.Cells.Add(lead)
  16.  
  17.                 Dim title As New TableCell
  18.                 Dim ddltitle As New DropDownList
  19.                 ddltitle.ID = "DDLTitletbl" & i.ToString
  20.                 ddltitle.Items.Add("Mr")
  21.                 ddltitle.Items.Add("Ms")
  22.                 ddltitle.Items.Add("Mrs")
  23.                 ddltitle.Items.Add("Miss")
  24.                 ddltitle.Items.Add("Master")
  25.                 ddltitle.Items.Add("Doctor")
  26.                 ddltitle.Items.Add("Lady")
  27.                 ddltitle.Items.Add("Sir")
  28.                 ddltitle.Items.Add("Rev.")
  29.                 ddltitle.SelectedIndex = Convert.ToInt32(ViewState("DDLTitletbl" & i.ToString).ToString)
  30.                 ddltitle.TabIndex = Convert.ToInt32(ViewState("DDLTitletbl" & i.ToString & "TabIndex").ToString)
  31.                 title.Controls.Add(ddltitle)
  32.                 r.Cells.Add(title)
  33.  
  34.                 Dim init As New TableCell
  35.                 Dim txtinit As New TextBox
  36.                 txtinit.ID = "TxtInittbl" & i.ToString
  37.                 txtinit.Text = ViewState("TxtInittbl" & i.ToString).ToString
  38.                 txtinit.TabIndex = Convert.ToInt32(ViewState("TxtInittbl" & i.ToString & "TabIndex").ToString)
  39.                 init.Controls.Add(txtinit)
  40.                 r.Cells.Add(init)
  41.  
  42.                 Dim surname As New TableCell
  43.                 Dim txtsurname As New TextBox
  44.                 txtsurname.ID = "TxtSurnametbl" & i.ToString
  45.                 txtsurname.Text = ViewState("TxtSurnametbl" & i.ToString).ToString
  46.                 txtsurname.TabIndex = Convert.ToInt32(ViewState("TxtSurnametbl" & i.ToString & "TabIndex").ToString)
  47.                 surname.Controls.Add(txtsurname)
  48.                 r.Cells.Add(surname)
  49.  
  50.                 Dim age As New TableCell
  51.                 Dim txtage As New TextBox
  52.                 txtage.ID = "TxtAgetbl" & i.ToString
  53.                 txtage.Text = ViewState("TxtAgetbl" & i.ToString).ToString
  54.                 txtage.TabIndex = Convert.ToInt32(ViewState("TxtAgetbl" & i.ToString & "TabIndex").ToString)
  55.                 age.Controls.Add(txtage)
  56.                 r.Cells.Add(age)
  57.  
  58.                 Dim ptcard As New TableCell
  59.                 Dim txtptcard As New TextBox
  60.                 txtptcard.ID = "TxtPTCardtbl" & i.ToString
  61.                 txtptcard.Text = ViewState("TxtPTCardtbl" & i.ToString).ToString
  62.                 txtptcard.TabIndex = Convert.ToInt32(ViewState("TxtPTCardtbl" & i.ToString & "TabIndex").ToString)
  63.                 ptcard.Controls.Add(txtptcard)
  64.                 r.Cells.Add(ptcard)
  65.  
  66.                 Dim outward As New TableHeaderCell
  67.                 Dim cboutward As New CheckBox
  68.                 cboutward.ID = "CBOutwardtbl" & i.ToString
  69.                 cboutward.Checked = Convert.ToBoolean(ViewState("CBOutwardtbl" & i.ToString).ToString)
  70.                 cboutward.TabIndex = Convert.ToInt32(ViewState("CBOutwardtbl" & i.ToString & "TabIndex").ToString)
  71.                 outward.Controls.Add(cboutward)
  72.                 r.Cells.Add(outward)
  73.  
  74.                 Dim returns As New TableHeaderCell
  75.                 Dim cbreturn As New CheckBox
  76.                 cbreturn.ID = "CBReturntbl" & i.ToString
  77.                 cbreturn.Checked = Convert.ToBoolean(ViewState("CBReturntbl" & i.ToString).ToString)
  78.                 cbreturn.TabIndex = Convert.ToInt32(ViewState("CBReturntbl" & i.ToString & "TabIndex").ToString)
  79.                 returns.Controls.Add(cbreturn)
  80.                 r.Cells.Add(returns)
  81.  
  82.                 TblPassengers.Rows.Add(r)
  83.                 i = i + 1
  84.             Else
  85.                 out = True
  86.             End If
  87.         End While
  88.     End Sub
  89.  

Código: Text
  1. 'Añadimos los manejadores de eventos
  2. Private Sub AddHandlers()
  3.         Dim i As Integer
  4.         For i = 1 To TblPassengers.Rows.Count - 1
  5.             Dim rdo As RadioButton
  6.             rdo = TblPassengers.Rows.Item(i).Cells.Item(0).FindControl("RdoLeadtbl" & i.ToString)
  7.             rdo.AutoPostBack = True
  8.             AddHandler rdo.CheckedChanged, AddressOf LeadCheckedChanged
  9. 'LeadCheckedChanged es un procedimiento normal en el que haras lo que quieras cuando se dispare el evento por pulsar en el radiobutton
  10.             Dim cb As CheckBox
  11.             cb = TblPassengers.Rows.Item(i).Cells.Item(7).FindControl("CBReturntbl" & i.ToString)
  12.             cb.AutoPostBack = True
  13.             AddHandler cb.CheckedChanged, AddressOf ReturnCheckedChanged
  14. 'ReturnCheckedChanged es un procedimiento normal en el que haras lo que quieras cuando se dispare el evento por pulsar en el checkbox
  15.         Next
  16.     End Sub
  17.  
La instruccion para llamar a este procedimiento de AddHandlers la hacemos en el page load.

Espero que te sirva

Saludos