Modificar los datos de un control GridView de servidor Web

Actualización: noviembre 2007

El control GridView tiene una funcionalidad integrada que permite a los usuarios editar o eliminar los registros sin que se requiera programación. Puede personalizar la funcionalidad de edición o eliminación del control GridView mediante eventos y plantillas.

Habilitar la funcionalidad de edición integrada

Puede habilitar la funcionalidad integrada de edición o eliminación del control GridView de cualquiera de las maneras siguientes:

Cómo funciona la edición en el control GridView

El control GridView puede mostrar una interfaz de usuario para permitir que los usuarios editen el contenido de cada fila. Normalmente, una cuadrícula que se pueda editar contendrá una columna con un botón o un vínculo en el que los usuarios pueden hacer clic para situar la fila en el modo de edición. (De forma predeterminada, el título del botón es "Editar").

Cuando los usuarios guardan un cambio, el control GridView transfiere los cambios y la información de la clave principal al control del origen de datos, que se identifica mediante la propiedad DataSourceID, que invoca la operación de actualización apropiada. Por ejemplo, el control SqlDataSource ejecuta una instrucción Update de SQL utilizando los datos modificados como valores de parámetro. El control ObjectDataSource llama a su método de actualización, y transfiere los parámetros como parte de la llamada al método.

El control GridView transfiere los valores al origen de datos para una operación de actualización o eliminación en tres colecciones de diccionarios: el diccionario Keys , el diccionario NewValues y el diccionario OldValues. Puede tener acceso a cada diccionario utilizando los argumentos transferidos a los eventos de actualización o eliminación del control GridView.

El diccionario Keys contiene los nombres y los valores de campos que identifican de forma unívoca el registro que se va a actualizar o eliminar, y contiene siempre los valores originales de los campos clave. Para especificar qué campos se sitúan en el diccionario Keys, establezca la propiedad DataKeyNames en una lista de nombres de campo separados por comas que represente la clave principal de los datos. La colección DataKeys se rellena automáticamente con los valores asociados a los campos especificados en la propiedad DataKeyNames.

Nota:

Los valores de clave principal originales de los campos especificados en la propiedad DataKeyNames se almacenan en el estado de vista. Si los valores de clave principal contienen información confidencial, deberá cifrar el contenido del estado de vista estableciendo la propiedad ViewStateEncryptionMode de la página en Always.

El diccionario NewValues contiene los valores actuales de los controles de entrada en la fila que se está editando. El diccionario OldValues contiene todos los valores originales de los campos excepto los de los campos clave, que están incluidos en el diccionario Keys.

El control del origen de datos utiliza los valores de los diccionarios Keys, NewValues y OldValues como parámetros en el comando de actualización o eliminación. Para obtener más información sobre cómo se crean los parámetros de control de origen de datos basándose en los diccionarios creados para valores enlazados, vea Cómo un control de origen de datos crea parámetros para campos enlazados a datos.

Puede examinar o personalizar el contenido de cualquiera de estos diccionarios antes de que se transfieran al origen de datos; para ello, controle los eventos RowUpdating o RowDeleting. Una vez que la actualización o la eliminación se ha completado, el control GridView desencadena el evento RowUpdated o RowDeleted. Estos eventos permiten llevar a cabo la lógica posterior a la consulta, como comprobaciones de integridad.

Tras finalizar la actualización o la eliminación y tras provocarse todos los eventos, el control GridView vuelve a enlazarse al control del origen de datos para mostrar los datos actualizados.

Nota:

Los valores originales de los campos actualizables en un control GridView se almacenan en ViewState. Si está deshabilitado ViewState en una página ASP.NET con un control GridView actualizable, las comprobaciones de concurrencia optimista no pueden usar los valores originales de los campos actualizables y los campos de clave principal que se recuperaron cuando se enlazó el control GridView por primera vez al origen de datos. Cuando la página devuelve datos para que se realice una actualización o eliminación, los valores actuales de la base de datos se recuperan como valores originales de los campos actualizables y campos de clave principal en el control GridView porque no hay valores almacenados en ViewState. La actualización o eliminación se lleva a cabo con estos valores originales. Si los valores originales han cambiado desde la primera vez que se rellenó el control GridView, la actualización o eliminación se realizará correctamente, pero la comprobación de concurrencia optimista no notificará un error tal y como se podría esperar.

Personalizar las interfaces de usuario de edición en el control GridView

Puede personalizar los elementos de edición (interfaz de usuario), como, por ejemplo, el tipo de control que aparece en modo de edición en cada campo de datos. El enlace de datos bidireccional automático permite al control personalizado proporcionar los valores que se pueden modificar y los que ya se han modificado que se van a guardar en el almacén de datos o que están alojados en éste.

Nota:

Si cambia la instrucción de actualización en un control del origen de datos o si reorganiza las columnas en el control GridView, compruebe siempre que los valores del control GridView que se transfieren al origen de datos coinciden con la configuración del origen de datos correspondiente.

Vea también

Referencia

Información general sobre GridView (Control de servidor Web)

Otros recursos

Controles de servidor Web de orígenes de datos