Este es un link permanente de
|
15/05/2008 10:45:01
|
|
RE: viewState
|
|
|
|
|
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
|
|
|