Mensaje dentro de Principiantes

Responder 
#1 - 06/05/2008 0:28:19 Reporta abuso | Link Permanente
laura
Usuario no registrado
viewState

Responder Citar
        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.
Volver arriba

Respuestas
Mostrar de en 15
#2 - 29/05/2008 23:59:23 Reporta abuso | Link Permanente
laura
Usuario no registrado
RE: viewState

Responder Citar

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.
Volver arriba

#3 - 15/05/2008 10:45:01 Reporta abuso | Link Permanente
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
Volver arriba
Mostrar de en 15