2008-11-07 61 views
5

Tengo un GridView que permite editar los valores en cada columna, en cada fila, todo el tiempo. El usuario ingresa todos sus cambios, hace clic en Guardar una vez y todos los cambios se confirman.Agregar nueva fila a GridView sin DataBind

El usuario también debe poder hacer clic en el botón Nuevo, tener una nueva fila en el GridView (sí, debe aparecer en el GridView), ingresar los datos que desee, hacer clic en Guardar y tener todos los cambios ir a la base de datos

Ahora. Aquí está el caso del usuario que me lanza: un usuario llega a la página, realiza varios cambios en varias filas existentes y luego necesita agregar una nueva, ingresar datos en la nueva fila, hacer clic en Guardar y hacer que todos los cambios vayan a la base de datos .

Sin embargo, la única forma en que he visto agregar una nueva fila vacía implica volver a vincular GridView, lo que significa que se perderán todos sus cambios. Esto obviamente no es bueno.

Por lo tanto, mi pregunta sería: ¿cuáles son algunos enfoques para agregar una fila nueva, vacía y editable a un GridView sin tener que volver a vincular el GridView?

Lo único que se me ocurre es que, en el evento de clic de los nuevos botones, elimine todos los datos de GridView (incluidas las ediciones potenciales del usuario), guárdelo en ViewState (o lo que sea), agregue el nuevo fila, repoblar la grilla. Esto, para mí, parece un poco raro, pero debería permitirme desactivar ViewState en GridView.

¿Alguna idea?

Respuesta

3

Justo en mi cabeza puedo pensar en dos opciones. El primero es almacenar en caché los resultados originales que está vinculando a la cuadrícula y cuando necesita agregar otra fila, agrega un datarow al conjunto de datos al que se está vinculando y luego vincula esto a la cuadrícula. Si hay cambios en la grilla, entonces necesita actualizar la tabla de datos. Una vez que se hayan realizado todos los cambios y el usuario haga clic en el botón Guardar, puede recorrer la tabla y actualizar la base de datos con los datos.

Se podría tener este aspecto

carga la página

  • Obtener datos DB y poner en una mesa
  • Enlazar la mesa a la red
  • tienda la mesa en una caché

Cuando el usuario pide una nueva fila

  • Obtener el objeto de datos en caché.
  • actualización de las filas que han cambiado
  • Añadir una fila vacía de enlace a la red

Cuando el usuario guarda la red

  • Obtener el objeto en caché.
  • Haga última serie de cambios
  • bucle a través de la fila y actualizar la base de datos

La otra manera de hacer esto es mediante la creación de la red de forma dinámica, pero esto implica mucho más esfuerzo que vale la pena teniendo en cuenta lo que ha descrito.

0

Puede agregar dinámicamente la nueva fila a través de javascript, y en el comando de guardar busque las filas recién agregadas. Eso es bastante común.

Cuestiones relacionadas