Foros del Web » Programando para Internet » ASPX (.net) »

Grabar Datos de una Tabla Dinámica

Estas en el tema de Grabar Datos de una Tabla Dinámica en el foro de ASPX (.net) en Foros del Web. Tengo una tabla la cual le agrego filas según mi necesidad y dentro de cada celda estoy añadiendo un "RadioButtonList". Todo funciona perfectamente, se me ...
  #1 (permalink)  
Antiguo 01/09/2007, 06:31
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Grabar Datos de una Tabla Dinámica

Tengo una tabla la cual le agrego filas según mi necesidad y dentro de cada celda estoy añadiendo un "RadioButtonList".

Todo funciona perfectamente, se me crea una tabla de 2 filas con 2 RadioButtonList dentro de cada celda. Ahora bien, cuando voy a grabar los datos contenido en la tabla, me aparece que la tabla no tiene filas. Cuando ASP.NET hace postback me borra la tabla y no puedo grabar los datos.

¿Qué debo hacer para que no se me borre la tabla y los controles creados dinámicamente dentro de ella al hacer un postback?

El código que utilizo para añadir filas a la tabla es el siguiente:
Código:
Dim Fila As System.Web.UI.HtmlControls.HtmlTableRow
Dim Celda As System.Web.UI.HtmlControls.HtmlTableCell

Fila = New System.Web.UI.HtmlControls.HtmlTableRow

rb = New RadioButtonList
rb.ID = "dbPuntos_" & intContador.ToString
rb.Font.Name = "Verdana"
rb.Font.Size = FontUnit.XXSmall

Celda = New System.Web.UI.HtmlControls.HtmlTableCell
Celda.Align = "Left"
Celda.Controls.Add(rb)
Fila.Cells.Add(Celda)

tblCalificaciones.Rows.Add(Fila)
El código para leer la tabla es el siguiente:
Código:
For i As Integer = 0 To tblCalificaciones.Rows.Count - 1
...
Next
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #2 (permalink)  
Antiguo 01/09/2007, 06:55
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Re: Grabar Datos de una Tabla Dinámica

Ya resolví el inconveniente. Lo que pasaba era que antes de grabar debía volver a pintar los controles en la pantalla. Con eso se resolvió y no se borró las opciones seleccionadas por el usuario.
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #3 (permalink)  
Antiguo 18/11/2007, 13:30
MK2
 
Fecha de Ingreso: enero-2007
Mensajes: 48
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Grabar Datos de una Tabla Dinámica

Hay alguna forma de hacerlo sin repintarlo???? Básicamente, mi problema es que las filas las cojo de una base de datos de la que no se cuántas columnas tiene. Esto me implica que tengo que crearlo dinámicamente. El problema de repintarlo es que cada vez que aprieto el botón guardar tiene que volver a llamar a la BD para volver a repintar esta tabla dinámica....

Hay alguna forma en la que te guarde la información de la tabla dinámica? Alguna propiedad de viewstate o lo que sea!!!
  #4 (permalink)  
Antiguo 18/11/2007, 18:39
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Re: Grabar Datos de una Tabla Dinámica

Hasta donde sé siempre hay que volver a repintar.
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #5 (permalink)  
Antiguo 19/11/2007, 06:05
Avatar de Javier Santamaria  
Fecha de Ingreso: julio-2007
Mensajes: 296
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: Grabar Datos de una Tabla Dinámica

Cita:
Iniciado por MK2 Ver Mensaje
Hay alguna forma de hacerlo sin repintarlo???? Básicamente, mi problema es que las filas las cojo de una base de datos de la que no se cuántas columnas tiene. Esto me implica que tengo que crearlo dinámicamente. El problema de repintarlo es que cada vez que aprieto el botón guardar tiene que volver a llamar a la BD para volver a repintar esta tabla dinámica....

Hay alguna forma en la que te guarde la información de la tabla dinámica? Alguna propiedad de viewstate o lo que sea!!!
No se si es exactamente lo que necesitas, pero yo tuve que hacer una tabla dinamica que añadoera filas en tiempo de ejecucion, y para que no perdiera los valores los tenia que guardar en el viewstate. Es decir cuando pulses el boton en lugar de guardar en la base de datos guardaras en el viewstate y cuando vuelva a cararse la pagina lo hara desde el viewstate. Luego puedes guardar todos los datos de una vez en la base de datos. Pero como de muestra vale un boton te dejo el link del topic :

xxtp://www.es-asp.net/foro/principiantes/4646/como-se-capturan-los-evetos-de-los-controles-creados-dinamicamente.aspx

Cambia xx por ht que no me deja ponerte la url.

Espero que te sirva.

Saludos
  #6 (permalink)  
Antiguo 19/11/2007, 13:41
MK2
 
Fecha de Ingreso: enero-2007
Mensajes: 48
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Grabar Datos de una Tabla Dinámica

Interesante el link pero tampoco me funciona. El hecho es que por mucho que recoja el evento click del botón con el manegador de eventos a la hora de guardar los datos del formulario dinámico que he creado, éste ya no existe cuando se dispone a guardar. Entonces seguimos en las de siempre: tener que repintar el maldito formulario cada vez que hago un postback (lo que me genera 2 llamadas a BD más y no me acaba de gustar el rendimiento...).
  #7 (permalink)  
Antiguo 20/11/2007, 05:00
Avatar de Javier Santamaria  
Fecha de Ingreso: julio-2007
Mensajes: 296
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: Grabar Datos de una Tabla Dinámica

Eso es porque cada vez que haces un post back tienes que guardar la informacion de tu formulario en el viewstate y cada vez que se va a cargar la pagina tienes que repintarlo, pero al repintar desde el viewstate no tienes que acceder a la BD, ya que los datos estan ahi.
Aqui tienes un ejemplo de como insertar y recuperar los datos en el viewstate sin perderlos entre postback

xxtp://www.es-asp.net/foro/principiantes/4467/gridview-de-insercion.aspx

Cambia xx por ht que no me deja ponerte la url.

Espero que te sirva.

Saludos
  #8 (permalink)  
Antiguo 21/11/2007, 17:14
MK2
 
Fecha de Ingreso: enero-2007
Mensajes: 48
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Grabar Datos de una Tabla Dinámica

Hola Javier, el problema es que en mi caso es un formulario dinámico. O sea, creo labels, textboxs (y asocio controles validadores de AJAX en cada textbox) dinámicamente. Según lo que he leído en tus artículos (muy interesantes por otra parte) el ViewState me permite guardar los datos que hay en los campos, ok, pero.... luego al apretar el botón guardar, aunque tenga en el viewstate estos datos, de donde saco la tabla con sus textboxs y sus propiedades si no es repintando???? Lo suyo seria que el viewstate realmente pudiera guardar la tabla, pero por lo que veo parece que solo puede guardar los datos que hay en ella.... no se si me he explicado bien :(
  #9 (permalink)  
Antiguo 22/11/2007, 05:25
Avatar de Javier Santamaria  
Fecha de Ingreso: julio-2007
Mensajes: 296
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: Grabar Datos de una Tabla Dinámica

Ahora te entiendo. Claro, yo tambien repinto mi tabla por asi decirlo. No es exactamente lo mismo porque yo tengo la fila cabecera y al primera fila declaradas en diseño, pero las demas tengo que ir metiendo los textbox, los radiobuttons, los checkbox. No he sabido hacerlo de otra forma. A ver si viene alguien y nos ilumina a los dos.

EDITO: De todas formas el viewstate te soluciona el acceso a la BD. Algo es algo

Suerte.

Última edición por Javier Santamaria; 22/11/2007 a las 05:27 Razón: Añadir informacion
  #10 (permalink)  
Antiguo 22/11/2007, 06:30
MK2
 
Fecha de Ingreso: enero-2007
Mensajes: 48
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Grabar Datos de una Tabla Dinámica

Es cierto, el ViewState va a ser un gran amigo a partir de ahora jejeje pero de todas formas esto del formulario dinámico me amarga un poco :S a ver si alguien nos explica la solución. El problema grave a parte de la consulta a la base de datos que tengo que hacer para mostrar el formulario, es que no se porque razón, cuando lo hago se pierden las propiedades de AJAX de los controles, con lo que ya no me crea máscaras, validadores sin refrescos, etc etc..... y evidentmente, no puedo hacer toda la aplicación utilizando estos validadores y en el formulario dinámico obviarlos!
Bueno,.... seguiré buscando y si encuentro una solución mas aceptable que repintar ya la expondré.

Saludos y muchas grácias por tu ayuda y tu tiempo :)
  #11 (permalink)  
Antiguo 30/01/2010, 08:41
 
Fecha de Ingreso: agosto-2003
Ubicación: Piura
Mensajes: 238
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: Grabar Datos de una Tabla Dinámica

Hola, me encuentro en el mismo probelam... me he visto obligado a generar una tabla dinámicamente, la cual, en cada celda, existe la posiblidad que tenga uno de los siguientes 3 controles: etiqueta, caja de texto o checbox.

La generación ya la hice, me ha salido estupenda... esta incluye generar la tabla celda por celda según un número de columnas que puede variar según sea el usuario que ingresa... como les digo, me sale bien....

Como ven, la tabla contiene controles que permiten al usuario ingresar datos y cuando termina de hacerlo presiona el botón "guardar" y los cambios realizados tendrían que guardarse en la base de datos... cuando voy al evento click del botón me doy con la sorpresa que la tabla que generé tiene 0 filas... investigando encuentro que el objeto Table no persiste y, leyendo sus post y los enlaces que anexan entiendo que debo poner los valores en el viewstate para luego repintar la tabla... aqui van mis dudas

- EN LA GENERACIÓN DE LA TABLA: sé que, apenas voy generando cada celda debo ir guardando en el viewstate lo generado, intenté guardar la colección de controles de cada celda pero esta coleección no es serializable, luego, intenté guardar los controles en si... pero el checkbox no es serializable (investigando un poco mas ningún control es serializable)... sólo me quedaría guardar los datos originales... bueno, estos los tengo en un DataTable y ese DataTable lo guardo en la viewstate
- AL GUARDAR LOS CAMBIOS DEL USUARIO: ya le mostré al usuario la tabla con los controles respectivos par que él haga las modificaciones que crea pertinentes... ahroa bien ¡como hago para guardar los cambios hechos por el usuario en el viewstate? si cuando voy al evento click del botón, la tabla ya no tiene nada (cero filas)... este es mi punto en blanco
- AL REPINTAR LA TABLA LUEGO DEL POSTBACK GENERADO POR EL BOTÓN: sé que debo pintar la tabla desde el PreLoad pero no tengo los datos cambiados por el usuario... es decir, solucionando el punto anterior, creo que ya solucionaría este.

Porfavor, agradeceré mucho si es que pudieran postear aqui un código de ejemplo... he leido los post de Javier Santamaría y me parecen buenos e interesantes pero me quedan dudas porque no sé como implementar por código el salvado de los cambios hechos por el usuario... ese punto lo tengo en vacío ahora...

Muchas gracias y espero su respuesta amigos
Saludos
Paco
__________________
Un hombre inteligente, caminando, llega mucho mas rápido que un torpe en coche
  #12 (permalink)  
Antiguo 01/02/2010, 15:05
 
Fecha de Ingreso: agosto-2006
Ubicación: en lima peru
Mensajes: 184
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Grabar Datos de una Tabla Dinámica

Amigos he leido sus comentarios y la solución seria la siguiente:

"NO USEN LA PROGRAMACIÓN EN EL SERVIDOR NI HABILITEN LOS POSTBACK'S"

Hagan todo el trabajo desde el cliente con un poco de DOM (Crear controles dinamicamente desde el cliente al puro estilo HTML)

¿Tu te preguntaras como hago tal marranada? la respuesta es simple usa DOM y Callback de ASP.net (No los controles ajax de micro...)

Una vez terminada la operación, utiliza un metodo javascript para recorrer los controles creados dinamicamente y recuperen los valores para enviarlos a través de un CALLBACK al servidor y asunto arreglado, yo ya me topo con este punto miles de veces y la solución planteada fue la correcta.
  #13 (permalink)  
Antiguo 01/02/2010, 17:14
 
Fecha de Ingreso: agosto-2003
Ubicación: Piura
Mensajes: 238
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: Grabar Datos de una Tabla Dinámica

Muchas gracias por tu respuesta programadorvip... intentaré tu solución para ver como me va
Saludos y gracias nuevamente
__________________
Un hombre inteligente, caminando, llega mucho mas rápido que un torpe en coche
  #14 (permalink)  
Antiguo 09/03/2012, 08:48
 
Fecha de Ingreso: mayo-2009
Mensajes: 4
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Grabar Datos de una Tabla Dinámica

Hola a todos!

Tengo el mismo problema, creo una tabla dinámicamente con controles textbox y combo box que el usuario alimenta y cuando le doy al botón de grabar y se hace el postback, se pierden todas las filas y columnas, y en su defecto, los controles a los que el usuario le puso valores... Leo que la solución es "pintar" otra vez los controles, pero no entiendo a qué os referís con "pintar"... si vuelvo a cargar la tabla, lógicamente, los valores que el usuario metió se habrían perdido... ¿Me podéis aclarar el concepto "pintar"?

Gracias y perdonad mi ignorancia...

Un saludo
  #15 (permalink)  
Antiguo 09/03/2012, 10:08
 
Fecha de Ingreso: mayo-2009
Mensajes: 4
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Grabar Datos de una Tabla Dinámica

Arreglado!!! ya lo he solucionado...
  #16 (permalink)  
Antiguo 12/03/2012, 13:31
Avatar de mackbeth  
Fecha de Ingreso: noviembre-2005
Mensajes: 370
Antigüedad: 18 años, 4 meses
Puntos: 10
Respuesta: Grabar Datos de una Tabla Dinámica

[Comentario]
Efectivamente programadorvip esa es la alternativa mas viable, anteriormente yo generaba una cadena de posiciones y las enviaba a un hidden mediante JS, posteriormente recomponía la tabla en base a esa cadena, detectaba cambios en base a lo obtenido de la BD, generaba transaciones y listo! pero recomiendo ampliamente hacer que trabajen en conjunto el cliente y el servidor para obtener el mejor resultado.


Saludos!
__________________
«~MaGax3iNeMD~»
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 23:24.