Este es un link permanente de RE: viewState.
Puedes volver a ver el tema completo o ir al Principiantes
15/05/2008 10:45:01
Javier Santamaria Hombre
Fecha de registro: 02/05/2007
1 post en este tema
188 posts en principiantes
192 posts en todos los foros
RE: viewState
Responder  Citar
Te dejo unos bucles de lectura y escritura en el viewstate que hice yo para algo similar:

Protected Sub Page_PreLoad(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreLoad
'This is a passengers table initialization to not lose the passengers details after each postback
'It's needed because the passengers table is created and loaded in runtime

Dim out As Boolean = False 'Control variable for the loop
Dim i As Integer = 2 'Index variable for the rows, it starts on number 2 because the table has by default two rows. A header and a passenger
While Not out
If Not ViewState("RdoLeadtbl" & i.ToString) Is Nothing Then
'If there's data on the viewstate for another row, the controls are created and loaded with the values they had before postback
  

 

Private Sub SaveTblPassengers()
'Saves the passengers table information in the viewstate in order to not be lost after each post back
Dim r As TableRow
Dim c As TableCell
Dim con As Control
Dim i As Integer
For i = 0 To TblPassengers.Rows.Count - 1
r = TblPassengers.Rows.Item(i)
For Each c In r.Cells
For Each con In c.Controls
Dim name As String
name = con.ID
Select Case name
Case "LblLeadtbl"
Dim lbl As New Label
lbl = con.FindControl("LblLeadtbl")
Me.ViewState.Add("LblLeadtbl", lbl.Text)
Case "LblTitletbl"
Dim lbl As New Label
lbl = con.FindControl("LblTitletbl")
Me.ViewState.Add("LblTitletbl", lbl.Text)
Case "LblInittbl"
Dim lbl As New Label
lbl = con.FindControl("LblInittbl")
Me.ViewState.Add("LblInittbl", lbl.Text)
Case "LblSurnametbl"
Dim lbl As New Label
lbl = con.FindControl("LblSurnametbl")
Me.ViewState.Add("LblSurnametbl", lbl.Text)
Case "LblAgetbl"
Dim lbl As New Label
lbl = con.FindControl("LblAgetbl")
Me.ViewState.Add("LblAgetbl", lbl.Text)
Case "LblPTCardtbl"
Dim lbl As New Label
lbl = con.FindControl("LblPTCardtbl")
Me.ViewState.Add("LblPTCardtbl", lbl.Text)
Case "LblOutwardtbl"
Dim lbl As New Label
lbl = con.FindControl("LblOutwardtbl")
Me.ViewState.Add("LblOutwardtbl", lbl.Text)
Case "LblReturntbl"
Dim lbl As New Label
lbl = con.FindControl("LblReturntbl")
Me.ViewState.Add("LblReturntbl", lbl.Text)
Case "RdoLeadtbl" & i.ToString
Dim rdo As New RadioButton
rdo = con.FindControl("RdoLeadtbl" & i.ToString)
Me.ViewState.Add("RdoLeadtbl" & i.ToString, rdo.Checked)
Me.ViewState.Add("RdoLeadtbl" & i.ToString & "TabIndex", rdo.TabIndex)
Case "DDLTitletbl" & i.ToString
Dim ddl As New DropDownList
ddl = con.FindControl("DDLTitletbl" & i.ToString)
Me.ViewState.Add("DDLTitletbl" & i.ToString, ddl.SelectedIndex)
Me.ViewState.Add("DDLTitletbl" & i.ToString & "TabIndex", ddl.TabIndex)
Case "TxtInittbl" & i.ToString
Dim txt As New TextBox
txt = con.FindControl("TxtInittbl" & i.ToString)
Me.ViewState.Add("TxtInittbl" & i.ToString, txt.Text)
Me.ViewState.Add("TxtInittbl" & i.ToString & "TabIndex", txt.TabIndex)
Case "TxtSurnametbl" & i.ToString
Dim txt As New TextBox
txt = con.FindControl("TxtSurnametbl" & i.ToString)
Me.ViewState.Add("TxtSurnametbl" & i.ToString, txt.Text)
Me.ViewState.Add("TxtSurnametbl" & i.ToString & "TabIndex", txt.TabIndex)
Case "TxtAgetbl" & i.ToString
Dim txt As New TextBox
txt = con.FindControl("TxtAgetbl" & i.ToString)
Me.ViewState.Add("TxtAgetbl" & i.ToString, txt.Text)
Me.ViewState.Add("TxtAgetbl" & i.ToString & "TabIndex", txt.TabIndex)
Case "TxtPTCardtbl" & i.ToString
Dim txt As New TextBox
txt = con.FindControl("TxtPTCardtbl" & i.ToString)
Me.ViewState.Add("TxtPTCardtbl" & i.ToString, txt.Text)
Me.ViewState.Add("TxtPTCardtbl" & i.ToString & "TabIndex", txt.TabIndex)
Case "CBOutwardtbl" & i.ToString
Dim cb As New CheckBox
cb = con.FindControl("CBOutwardtbl" & i.ToString)
Me.ViewState.Add("CBOutwardtbl" & i.ToString, cb.Checked)
Me.ViewState.Add("CBOutwardtbl" & i.ToString & "TabIndex", cb.TabIndex)
Case "CBReturntbl" & i.ToString
Dim cb As New CheckBox
cb = con.FindControl("CBReturntbl" & i.ToString)
Me.ViewState.Add("CBReturntbl" & i.ToString, cb.Checked)
Me.ViewState.Add("CBReturntbl" & i.ToString & "TabIndex", cb.TabIndex)
End Select
Next
Next
Next
End Sub 

Perdona por el ingles, si no entiendes algo pregunta.

Saludos


Dim r As New TableRow

Dim lead As New TableHeaderCell
Dim rdolead As New RadioButton
rdolead.ID = "RdoLeadtbl" & i.ToString
rdolead.Checked = Convert.ToBoolean(ViewState("RdoLeadtbl" & i.ToString).ToString)
rdolead.TabIndex = Convert.ToInt32(ViewState("RdoLeadtbl" & i.ToString & "TabIndex").ToString)
lead.Controls.Add(rdolead)
r.Cells.Add(lead)

Dim title As New TableCell
Dim ddltitle As New DropDownList
ddltitle.ID = "DDLTitletbl" & i.ToString
ddltitle.Items.Add("Mr")
ddltitle.Items.Add("Ms")
ddltitle.Items.Add("Mrs")
ddltitle.Items.Add("Miss")
ddltitle.Items.Add("Master")
ddltitle.Items.Add("Doctor")
ddltitle.Items.Add("Lady")
ddltitle.Items.Add("Sir")
ddltitle.Items.Add("Rev.")
ddltitle.SelectedIndex = Convert.ToInt32(ViewState("DDLTitletbl" & i.ToString).ToString)
ddltitle.TabIndex = Convert.ToInt32(ViewState("DDLTitletbl" & i.ToString & "TabIndex").ToString)
title.Controls.Add(ddltitle)
r.Cells.Add(title)

Dim init As New TableCell
Dim txtinit As New TextBox
txtinit.ID = "TxtInittbl" & i.ToString
txtinit.Text = ViewState("TxtInittbl" & i.ToString).ToString
txtinit.TabIndex = Convert.ToInt32(ViewState("TxtInittbl" & i.ToString & "TabIndex").ToString)
init.Controls.Add(txtinit)
r.Cells.Add(init)

Dim surname As New TableCell
Dim txtsurname As New TextBox
txtsurname.ID = "TxtSurnametbl" & i.ToString
txtsurname.Text = ViewState("TxtSurnametbl" & i.ToString).ToString
txtsurname.TabIndex = Convert.ToInt32(ViewState("TxtSurnametbl" & i.ToString & "TabIndex").ToString)
surname.Controls.Add(txtsurname)
r.Cells.Add(surname)

Dim age As New TableCell
Dim txtage As New TextBox
txtage.ID = "TxtAgetbl" & i.ToString
txtage.Text = ViewState("TxtAgetbl" & i.ToString).ToString
txtage.TabIndex = Convert.ToInt32(ViewState("TxtAgetbl" & i.ToString & "TabIndex").ToString)
age.Controls.Add(txtage)
r.Cells.Add(age)

Dim ptcard As New TableCell
Dim txtptcard As New TextBox
txtptcard.ID = "TxtPTCardtbl" & i.ToString
txtptcard.Text = ViewState("TxtPTCardtbl" & i.ToString).ToString
txtptcard.TabIndex = Convert.ToInt32(ViewState("TxtPTCardtbl" & i.ToString & "TabIndex").ToString)
ptcard.Controls.Add(txtptcard)
r.Cells.Add(ptcard)

Dim outward As New TableHeaderCell
Dim cboutward As New CheckBox
cboutward.ID = "CBOutwardtbl" & i.ToString
cboutward.Checked = Convert.ToBoolean(ViewState("CBOutwardtbl" & i.ToString).ToString)
cboutward.TabIndex = Convert.ToInt32(ViewState("CBOutwardtbl" & i.ToString & "TabIndex").ToString)
outward.Controls.Add(cboutward)
r.Cells.Add(outward)

Dim returns As New TableHeaderCell
Dim cbreturn As New CheckBox
cbreturn.ID = "CBReturntbl" & i.ToString
cbreturn.Checked = Convert.ToBoolean(ViewState("CBReturntbl" & i.ToString).ToString)
cbreturn.TabIndex = Convert.ToInt32(ViewState("CBReturntbl" & i.ToString & "TabIndex").ToString)
returns.Controls.Add(cbreturn)
r.Cells.Add(returns)

TblPassengers.Rows.Add(r)
i = i + 1
Else
out = True
End If
End While
End Sub