|
#1 -
06/05/2008 0:28:19
|
Reporta abuso
|
Link Permanente
|
|
viewState
|
|
|
|
|
|
Hola,
Primero intentare dar un panorama de lo que estoy intentando hacer...
Tengo un gridview con un itemtemplate (checkBox)... el cual actualizo en cada postback, dependiendo de las opciones que el usuario seleccione de 2 controles dropdownlist. Bien, despues de recargar el grid, el usuario marca los checkBox de las lineas que le interesa guardar la info.
Ahora bien despues de que el usuario selecciona las lineas del grid, con un boton envio a guardar la informacion seleccionada. Despues del botonazo se hace el post y pierdo la seleccion del usuario antes de ser guardada.
La solucion que estoy intentando es guardar la seleccion en variables del viewState.
Pero me estoy emproblemando, porque no se si exista una manera de guardar arreglos en variables de ViewState y como se recuperarian variables de este tipo... Espero haberme explicado y me puedan ayudar.
gracias.
|
|
|
|
|
|
#2 -
29/05/2008 23:59:23
|
Reporta abuso
|
Link Permanente
|
|
RE: viewState
|
|
|
Muchas Gracias, Javier
la vdd ya resolvi mi problema... tu código lo tendre en cuenta en la utilizacion del viewstate... pero por si alguna otra persona tiene problemas con el viewstate, dejo comentrio.
Mi problema principal (ya se, bien mal) es que realmente desconocia el ciclo de la pagina... estaba queriendo pasar el valor al viewstate, cuando la pagina ya habia hecho el post.
Para poder tomar los valores que el usuario colocaba en los controles, lo que hice fue tomarlos antes de que hiciera el post. "ojo con eso".... se lee bastante simple, pero a veces se nos pasa por alto. (los tome cuando la pagina hace el page_load... antes de que limpiara mi grid... mi comando principal esta en el page_load... he ahi mi problema).
Saludos y de nuevo Gracias.
|
|
|
|
|
|
|
#3 -
15/05/2008 10:45:01
|
Reporta abuso
|
Link Permanente
|
|
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
|
|
|
|
|