Compartir a través de


Utilizar la fila de nuevos registros en el control DataGridView de formularios Windows Forms

Al usar un control DataGridView para editar datos en la aplicación, a menudo viene muy bien proporcionar a los usuarios la capacidad de agregar nuevas filas de datos al almacén de datos. El control DataGridView admite esta funcionalidad proporcionando una fila para los nuevos registros, que siempre aparece como la última fila. Se distingue por un símbolo de asterisco (*) en el encabezado de fila. En las secciones siguientes se describen algunas de las cosas que debe tener en cuenta al programar con la fila para nuevos registros habilitada.

Visualización de la fila de nuevos registros

Utilice la propiedad AllowUserToAddRows para indicar si se va a mostrar la fila de nuevos registros. El valor predeterminado de esta propiedad es true.

En caso de que haya enlace de datos, la fila de nuevos registros se mostrará si la propiedad AllowUserToAddRows del control y la propiedad IBindingList.AllowNew del origen de datos son ambas true. Si alguna de las dos es false, no se mostrará.

Relleno de la fila de nuevos registros con datos predeterminados

Cuando el usuario selecciona la fila de nuevos registros como fila actual, el control DataGridView genera el evento DefaultValuesNeeded.

Este evento proporciona acceso al nuevo elemento DataGridViewRow y le permite rellenar la nueva fila con datos predeterminados. Para obtener más información, vea Procedimiento para especificar valores predeterminados para nuevas filas en el control DataGridView de Windows Forms

La colección Rows

La fila de nuevos registros se encuentra en la colección Rows del control DataGridView, pero se comporta de forma diferente en dos aspectos:

  • La fila de nuevos registros no se puede quitar de la colección Rows mediante programación. Si se intentara, se produciría una excepción InvalidOperationException. El usuario tampoco puede eliminar la fila de nuevos registros. El método DataGridViewRowCollection.Clear no quita esta fila de la colección Rows.

  • No se puede agregar ninguna fila después de la fila de nuevos registros. Si se intentara, se produciría una excepción InvalidOperationException. En consecuencia, la fila de nuevos registros siempre es la última fila del control DataGridView. Los métodos de DataGridViewRowCollection que agregan filas (Add, AddCopy y AddCopies) llaman a métodos de inserción internamente cuando la fila de nuevos registros está presente.

Personalización visual de la fila de nuevos registros

Cuando se crea la fila de nuevos registros, se basa en la fila especificada por la propiedad RowTemplate. Los estilos de celda que no se hayan especificado para esta fila se heredan de otras propiedades. Para obtener más información sobre la herencia de estilos de celda, vea Estilos de celda en el control DataGridView de Windows Forms.

Los valores iniciales mostrados por las celdas de la fila de nuevos registros se recuperan de la propiedad DefaultNewRowValue de cada celda. En el caso de las celdas de tipo DataGridViewImageCell, esta propiedad devuelve una imagen de marcador de posición. En caso contrario, esta propiedad devuelve null. Puede invalidar esta propiedad para que se devuelva un valor personalizado. Sin embargo, estos valores iniciales se pueden reemplazar por un controlador de eventos DefaultValuesNeeded cuando el foco se sitúa en la fila de nuevos registros.

Los iconos estándar del encabezado de esta fila, que son una flecha o un asterisco, no se exponen públicamente. Si desea personalizar estos iconos, deberá crear una clase DataGridViewRowHeaderCell personalizada.

Los iconos estándar usan la propiedad ForeColor del elemento DataGridViewCellStyle que la celda de encabezado de fila utiliza. Los iconos estándar no se representan si no hay suficiente espacio para mostrarlos completamente.

Si la celda de encabezado de fila tiene un valor de cadena establecido y no hay suficiente espacio para el texto y el icono, el icono se quita primero.

Ordenación

En el modo sin enlazar, los registros nuevos siempre se agregarán al final de DataGridView aunque el usuario haya ordenado el contenido de DataGridView. El usuario tendrá que volver a aplicar la ordenación para ordenar la fila en la posición correcta; este comportamiento es similar al del control ListView.

En los modos virtual y con enlace de datos, el comportamiento de inserción cuando se aplica una ordenación dependerá de la implementación del modelo de datos. En ADO.NET, la fila se ordena inmediatamente en la posición correcta.

Otros apuntes sobre la fila de nuevos registros

La propiedad Visible de esta fila no se puede establecer en false. Si se intentara, se produciría una excepción InvalidOperationException.

La fila de nuevos registros siempre se crea en el estado no seleccionado.

Modo virtual

Si va a implementar el modo virtual, deberá realizar un seguimiento de cuándo se necesita una fila de nuevos registros en el modelo de datos y cuándo revertir la adición de la fila. La implementación exacta de esta funcionalidad depende de la implementación del modelo de datos y de su semántica de transacciones, por ejemplo, si el ámbito de confirmación está en el nivel de celda o de fila. Para obtener más información, vea Modo virtual en el control DataGridView de Windows Forms.

Consulte también