Foros del Web » Programación para mayores de 30 ;) » .NET »

Como conservar valores en un postback??

Estas en el tema de Como conservar valores en un postback?? en el foro de .NET en Foros del Web. Hola que tal buenas tardes foro.... aqui estamos saludandolos y con una nueva duda. Tengo un DataGrid(2) que lleno de otro DataGrid(1). lo lleno atraves ...
  #1 (permalink)  
Antiguo 25/04/2005, 13:21
Avatar de ahoshy  
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
Pregunta Como conservar valores en un postback??

Hola que tal buenas tardes foro.... aqui estamos saludandolos y con una nueva duda.

Tengo un DataGrid(2) que lleno de otro DataGrid(1). lo lleno atraves de un boton de agregar. El problema es este:
El Datagrid(1) se llena segun lo que yo seleccione de un Dropdownlist, este dropdownlist tiene autopostback para ejecutar el SP y llenar el Datagrid(1) con el selectedItem del Dropdownlist.

El problema es el siguiente:
Si yo del datagrid(1) paso valores al DataGrid(2) y selecciono otro elemento para que se vuelva a llenar el DataGrid(1), y selecciono elementos de nuevo del DataGrid(1) y los agrego con el boton los valores anteriores se pierden y se vuelve a redimenzionar el DataGrid(2).
Mi pregunta:
Puedo almacenar la informacion de mi Datagrid(2) y anadirle los nuevos elementos de mi Datagrid(1) a modo que pueda seleccionar varios elementos de el Grid uno sin que se pierdan para formar un solo DataGrid con la informacion qeu necesito para despues imprimirla.

A lo que tengo entendido es algo asi como el Post en php qeu se guardan y despues se recuperan en el datagrid(2).

Por favor si alguien sabe una forma de hacerlo le agradecere mucho . Saludos

Última edición por ahoshy; 25/04/2005 a las 14:20
  #2 (permalink)  
Antiguo 25/04/2005, 16:14
Avatar de splinter  
Fecha de Ingreso: junio-2004
Ubicación: Misantla,Ver.Mexico
Mensajes: 181
Antigüedad: 19 años, 10 meses
Puntos: 0
Hola

Una idea es que uses dataset para implementar las operaciones que deseas, claro que estos reducen un poco o bastante la carga de tu pagina, pero te permitirán mantener el estado de tus grids.

Saludos
  #3 (permalink)  
Antiguo 26/04/2005, 02:03
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Tambien podrías utilizar datatables y almacenarlos en el viewstate, y al hacer postback, añadirlo al datatable y cargar el grid2
  #4 (permalink)  
Antiguo 26/04/2005, 09:18
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
Pero Como Se Maneja El Viewstate Ya Estube Haciendo Pruabas Y No Me Sale, Prodian Darme Un Ejmplo En Codigo Para Darme Una Diea
  #5 (permalink)  
Antiguo 26/04/2005, 09:25
Avatar de neivan  
Fecha de Ingreso: febrero-2005
Mensajes: 539
Antigüedad: 19 años, 3 meses
Puntos: 1
Mejor si kieres alamcenar un datetable alamcenarlo en session q en una viewstate
LA viewstate mejor cuando son datos como una cadena de caracteres o un nuemro ....
Cuando conlleb amuchos registros mejor utilizar variables de session

Su funcionamiento es igual en el sentido de su utilizacion

session("dt")=midatetable o midataset
viewstate("nombre que le kieras dar")= valor que el kieras asignar

y pa recuperar el valor al reves

No tiene mas
  #6 (permalink)  
Antiguo 26/04/2005, 09:52
Avatar de neivan  
Fecha de Ingreso: febrero-2005
Mensajes: 539
Antigüedad: 19 años, 3 meses
Puntos: 1
La esplicacion a x q te digo q utilices variables de session;

La sviewstate solo se utilizan para indices por que un dataset lleba mucha informacion.El viewstate deja en el navegador un campo oculto encriptado que ocuparía mucho y ralentizaria el tema.
La variable de session se almacena en el servidor y no en el navegador.
la información del navegador cada vez que clikamos un boton,recargamos la pagina va al servidor,de aki su lentitud
  #7 (permalink)  
Antiguo 26/04/2005, 10:08
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Eso no lo sabia neivan muchas gracias por la info
  #8 (permalink)  
Antiguo 26/04/2005, 10:15
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
tengo una duda, para usar la variable de sesion se usa de la siguiente manera

session("mitabla")=tablaprincipal
de esta forma alamacenamos la tabla de la variable, pero para recuperarla usamos lo siguiente

nuevatabla=session("mitabla")

mi pregunta es saber si tengo que instanciar la variable nuevatabla como un datatable para poder usarla, agradeceria que me corriguieras los errores y que aclararas esa duda
  #9 (permalink)  
Antiguo 26/04/2005, 10:26
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Mejor si kieres alamcenar un datetable alamcenarlo en session q en una viewstate
LA viewstate mejor cuando son datos como una cadena de caracteres o un nuemro ....
Cuando conlleb amuchos registros mejor utilizar variables de session
Estoy en cierta parte de acuedo, pero complementando la informacion, el viewstate en ciertos casos es bueno porque solo vive la informacion en la página activa, y le dejas el trabajo al cliente, en cambio en session vivirá mientras tengas abierta la aplicacion y estás cargando al server a menos que liberes la session en alguna parte cuando ya no la necesites

Todo depende de que informacion sea la que vas a guardar y en que partes la vas a utilizar.

Hay que checar bien las necesidades.

Cita:
mi pregunta es saber si tengo que instanciar la variable nuevatabla como un datatable para poder usarla,

Podría ser así:

Cita:
nuevatabla= Ctype(session("mitabla"),DataTable)
Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #10 (permalink)  
Antiguo 26/04/2005, 10:47
Avatar de ahoshy  
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
y otra cosa para instanciar el objeto datatable que es mi variable en la varable de sesio se realiza ed la siguiente manera

session("temporal")=mytabla

donde mytabla es el objeto datatable que quiero almacenar la informacion, agradeceria que me corijas los errores
  #11 (permalink)  
Antiguo 26/04/2005, 11:17
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
ASi es..
  #12 (permalink)  
Antiguo 26/04/2005, 11:25
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
ahora donde se tiene problemas es cuando se le quiere agregar nuevos valores a las filas, se tiene en el codigo>

tabla=Ctype(Session("temporal"),Datatable)

dim fila as datarow= tabla.newrow
fila(0)="uno"
fila(1)="dos"

el problema que nos maraca es que no sencuentra el indice y no se que este pasando
  #13 (permalink)  
Antiguo 27/04/2005, 09:34
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
Amigo Rootk nos podias hechar la mano en esta parte, ya es lo unico que nos hace falta. porfavor
  #14 (permalink)  
Antiguo 27/04/2005, 09:46
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Como estas llenando tu datatable..??

Estas seguro que existe la columna 0 y 1 ??

Porque te debe funcionar así:

Cita:
Dim drow As DataRow = tabla.NewRow
drow(0) = "valor"
drow(1) = "otro valor"
...
dt.Rows.Add(drow)
  #15 (permalink)  
Antiguo 27/04/2005, 09:53
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
de hecho le tenemos de la misma forma que nos muestra pero el problema que nos marca que nos marca es que no se encuentra la columna cero, pero lo mas raro es que cunado se ejecuta por primera ves si los carga, pero una ves que se realiza la instancia con la variable de sesion la cual trae todos los valores del datatable y se le quieren agregar nos marca un error, y no sabemos si la variable de session nos alamacena todos los datos del datatable.
  #16 (permalink)  
Antiguo 27/04/2005, 10:18
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Creo que es imposible que si tu no desasignas valores, la variable de sesion los pierda, asegurate de que cuando haces postback, vuelves a llenar tabla
  #17 (permalink)  
Antiguo 27/04/2005, 10:24
Avatar de ahoshy  
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
Código PHP:

Private Sub btnAgregar_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles btnAgregar.Click

Dim col 
As DataColumn temp.Columns.Add("CLAVE"Type.GetType("System.String"))
Dim col2 As DataColumn temp.Columns.Add("DESCRIPCION"Type.GetType("System.String"))
Dim i1 As Integer 

Dim i 
As Integer
Dim o 
As Integer
 
col
.AllowDBNull False
col
.Unique False
col2
.AllowDBNull False
col2
.Unique False
 
If ViewState("ban") = 1 Then
recupera
()
End If
 
For 
i1 0 To dgProductos.Items.Count 1
If CType(dgProductos.Items(i1).Cells(0).Controls.Item(1), CheckBox).Checked Then
Try
dgCompra.Items.Count
dgCompra
.DataSource temp
dgCompra
.DataBind()
Dim fila As DataRow temp.NewRow
fila
(0) = dgProductos.Items(i).Cells(1).Text '***En esta parte ya intente 
fila(1) = dgProductos.Items(i).Cells(2).Text '
***poner la fila en la que se 
temp
.Rows.Add(fila)                                                    '***quedo. y marca la columna 1
                                                                                                '
***no existePero al Pasar por  primera vez si ***funciona adecuadamente el probelma es cuando le quiero  agregar la filas despues de un postback.
Catch 
IOExcep As System.IO.IOException
 
End 
Try
End If
Next
 
Response
.Write(temp)
dgCompra.DataSource temp
dgCompra
.DataBind()
btnEnviar.Visible True
End Sub 
estos son los procedimientos que tengo para guardar y recuperar el valor del date table antes y despues del postback.
Código PHP:
Private Sub guarda_Sesion() '***Guarda el contenido de mi datatable con el 
Dim dt As DataTable            '
***que lleno el grid   
ViewState
("dt") = temp 
End Sub
Private Sub recupera()        '***Recupero el valor guardado

temp = CType(ViewState("dt"), DataTable)
'
dgCompra.DataSource temp
'dgCompra.DataBind()        '****Aqui si lo tato de llenar me marca error.
End Sub 

El problema sigue en lo mismo necesito añadir registros de DataGrid a otro depues de seleccionar en un DropDownlist, necesito hacer un drop con todos los productos seleccionados para posteriormente imprimirlo. Si alguien por favor puede ayudarnos. Muchas gracias y un saludo a todo el foro.
__________________
Muchos hombres habrían sido sabios si no hubieran creído demasiado pronto que ya lo eran. El autógrafo más digno de un hombre es aquel que deja grabado con sus obras.
  #18 (permalink)  
Antiguo 27/04/2005, 10:26
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
aqui esta el codigo para que le den una checada
  #19 (permalink)  
Antiguo 27/04/2005, 10:53
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Bueno, lo primero , para optimizar tu codigo, si en la función recupera haces:

dgCompra.DataSource = temp
dgCombra.DataBind()

Luego,para que lo vuelves a hacer dgProductos.Items.Count - 1 veces al recorrer el bucle??Hay estás cargando el datagrid muchísimas veces, yo que tú lo cargaría después del bucle.

La asignación y el guardado está bien, siempre y cuando temp sea una variable de la página,

dim temp as datatable

fuera de cualquier funcion,

Haber, que más, después de haber agregado, no deberías llamar a guardarSession??para que el viewstate quede actualizado???? o en que momento exactamente guardas el viewstate??
  #20 (permalink)  
Antiguo 27/04/2005, 11:18
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
y como se hace eso de guardar la sesion, perdon esque soy nuevo en .net
  #21 (permalink)  
Antiguo 27/04/2005, 13:30
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Me refiero a tu función de Guarda_Session,que donde la llamas o que cuando asignas a viewstate("dt") el valor de temp y que si en ese momento temp está cargado.
  #22 (permalink)  
Antiguo 28/04/2005, 08:37
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
la funcion de guardar_session, la usamos en cada ves que cambiamos la tabla de la cual estamos pasandos los valores a la nueva tabla, es decir usamos un drop el cual contiene nombres de varias tablas, al escoger en el drop automaticamente se llena una tabla con los valores que posee la tabla selecionada, para posteiormente selecionarlos y mandarlos a la tabla que los va grupar, ahi es cuando la funcin guardar_session entra, para lamacenar los valors que se tiene en la tabla donde se agrupan los registro selecionados.
  #23 (permalink)  
Antiguo 28/04/2005, 10:25
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Bien, pues si has optimizado como te he dicho y guardais el estado de temp como decís (es que por lo menos en el code que habeis puesto no llamais a la función Guarda_Session() por ningún sitio, y deberíais hacerlo ahí).

Ahora, donde exactamente os salta el error??en:

fila(0) = dgProductos.Items(i).Cells(1).Text ?????????
o donde ??

que os dice exactamente????
  #24 (permalink)  
Antiguo 28/04/2005, 10:35
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
gracias por tu ayuda amigo Jose minglein2, ya pudimos resolver el problema, lo que teniamos mal era la colocacion de donde se agragavan las filas en la tabla una ves que se realizaba el guardar session. gracias de ante mano.
  #25 (permalink)  
Antiguo 28/04/2005, 11:33
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
y a todos los que participaron en esto
  #26 (permalink)  
Antiguo 28/04/2005, 15:28
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
ok, me alegro de que ya este solucionado. Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:15.