Compartir a través de


Modo virtual del control DataGridView de formularios Windows Forms

Actualización: noviembre 2007

Con el modo virtual, puede administrar la interacción entre el control DataGridView y una caché de datos personalizada. Para implementar el modo virtual, establezca la propiedad VirtualMode en true y controle uno o más de los eventos descritos en este tema. Normalmente se controlará por lo menos el evento CellValueNeeded, que habilita los valores de búsqueda del control en la caché de datos.

Modo de enlace y modo virtual

El modo virtual sólo es necesario cuando necesita complementar o reemplazar el modo de enlace. En modo de enlace, se establece la propiedad DataSource y el control carga automáticamente los datos del origen especificado y envía los cambios de nuevo al usuario. Puede controlar las columnas enlazadas que se van a mostrar, y el mismo origen de datos controla normalmente operaciones tales como la ordenación.

Complementar el modo de enlace

Para complementar el modo de enlace, muestre las columnas sin enlazar junto con las columnas enlazadas. Este procedimiento a veces se denomina "modo mixto" y es útil para mostrar, por ejemplo, valores calculados o controles de interfaz del usuario.

Dado que las columnas sin enlazar están fuera del origen de datos, las omiten las operaciones de ordenación del origen de datos. Por consiguiente, cuando habilita la ordenación en modo mixto, debe administrar los datos sin enlazar en una caché local e implementar el modo virtual para dejar que el control DataGridView interactúe con él.

Para obtener más información sobre el uso del modo virtual para mantener los valores de las columnas sin enlazar, vea los ejemplos en los temas de referencia de la propiedad DataGridViewCheckBoxColumn.ThreeState y de la clase System.Windows.Forms.DataGridViewComboBoxColumn.

Reemplazar el modo de enlace

Si el modo de enlace no satisface las necesidades de rendimiento, puede administrar todos los datos en una caché personalizada a través de los controladores de eventos en modo virtual. Por ejemplo, puede utilizar el modo virtual para implementar un mecanismo de carga de datos Just-in-time (JIT) que recupere sólo los datos de una base de datos en red que sean necesarios para obtener un rendimiento óptimo. Este escenario resulta particularmente útil al trabajar con grandes cantidades de datos en una conexión de red lenta, o con equipos cliente que tienen una cantidad limitada de RAM o de espacio de almacenamiento.

Para obtener más información sobre cómo utilizar el modo virtual en un escenario Just-in-time, vea Implementar el modo virtual mediante la carga de datos Just-In-Time en el control DataGridView de formularios Windows Forms.

Eventos en modo virtual

Si los datos son de sólo lectura, el evento CellValueNeeded puede ser el único evento que necesite controlar. Los eventos en modo virtual adicionales permiten habilitar la funcionalidad concreta como modificaciones del usuario, adición o eliminación de filas y las transacciones de fila.

Asimismo, también son útiles en modo virtual algunos eventos DataGridView estándar (como los eventos que tienen lugar cuando los usuarios agregan o eliminan filas, o cuando los valores de celda se modifican, analizan, validan o reciben formato). También se pueden controlar eventos que permiten mantener valores que normalmente no están almacenados en un origen de datos enlazado, como el texto de la información sobre herramientas de celdas, texto de error de celdas y filas, datos de menús contextuales de filas y celdas, y datos de alto de filas.

Para obtener más información sobre cómo implementar el modo virtual para administrar los datos de lectura y escritura con un ámbito de confirmación de fila, vea Tutorial: Implementar el modo virtual en el control DataGridView de formularios Windows Forms.

Para obtener un ejemplo que implementa el modo virtual con un ámbito de confirmación de celda, vea el tema de referencia de la propiedad VirtualMode.

Los eventos siguientes sólo aparecen cuando la propiedad VirtualMode se establece en true.

Evento

Descripción

CellValueNeeded

Lo utiliza el control para recuperar un valor de celda de la caché de datos para su presentación. Este evento sólo tiene lugar en aquellas celdas de columnas sin enlazar.

CellValuePushed

Lo utiliza el control para confirmar los datos proporcionados por el usuario para una celda a la caché de datos. Este evento sólo tiene lugar en aquellas celdas de columnas sin enlazar.

Llame al método UpdateCellValue cuando se modifique un valor en caché fuera de un controlador de evento CellValuePushed para asegurar que se muestra el valor actual en el control y para aplicar los modos de tamaño automáticos actualmente en vigor.

NewRowNeeded

Lo utiliza el control para indicar la necesidad de una nueva fila en la caché de datos.

RowDirtyStateNeeded

Lo utiliza el control para determinar si una fila tiene algún cambio sin confirmar.

CancelRowEdit

Lo utiliza el control para indicar que una fila debería revertir a sus valores almacenados en memoria caché.

Los eventos siguientes son útiles en modo virtual, pero se pueden utilizar sin tener en cuenta el valor de la configuración de la propiedad VirtualMode.

Eventos

Descripción

UserDeletingRow

UserDeletedRow

RowsRemoved

RowsAdded

Lo utiliza el control para indicar cuándo se eliminan o se agregan filas, permitiéndole actualizar la caché de datos en consecuencia.

CellFormatting

CellParsing

CellValidating

CellValidated

RowValidating

RowValidated

Lo utiliza el control para dar formato a los valores de celda para su presentación y para analizar y validar los datos proporcionados por el usuario.

CellToolTipTextNeeded

Lo utiliza el control para recuperar el texto de información sobre herramientas de la celda cuando se establece la propiedad DataSource o la propiedad VirtualMode es true.

Se muestra la información sobre herramientas de la celda únicamente cuando el valor de la propiedad ShowCellToolTips es true.

CellErrorTextNeeded

RowErrorTextNeeded

Lo utiliza el control para recuperar el texto de error de la fila o celda cuando se establece la propiedad DataSource o la propiedad VirtualMode es true.

Llame al método UpdateCellErrorText o al método UpdateRowErrorText cuando cambie el texto de error de la fila o celda para asegurar que se muestra el valor actual en el control.

Se muestran los glifos de error de la celda y fila cuando los valores de las propiedades ShowCellErrors y ShowRowErrors son true.

CellContextMenuStripNeeded

RowContextMenuStripNeeded

Lo utiliza el control para recuperar un ContextMenuStrip de la celda o fila cuando se establece la propiedad DataSource del control o la propiedad VirtualMode es true.

RowHeightInfoNeeded

RowHeightInfoPushed

La utiliza el control para recuperar o almacenar información del alto de fila en la caché de datos. Llame al método UpdateRowHeightInfo cuando cambie la información de alto de fila almacenada en la memoria caché fuera de un controlador de eventos RowHeightInfoPushed para asegurar que se utiliza el valor actual al mostrar el control.

Procedimientos recomendados en modo virtual

Si está implementando en modo virtual con objeto de trabajar eficazmente con grandes cantidades de datos, también deseará asegurar que está trabajando eficazmente con el mismo control DataGridView. Para obtener más información sobre el uso eficaz de estilos de celda, ajustes automáticos de tamaño, selecciones y uso compartido de filas, vea Procedimientos recomendados para ajustar la escala del control DataGridView en formularios Windows Forms.

Vea también

Tareas

Tutorial: Implementar el modo virtual en el control DataGridView de formularios Windows Forms

Conceptos

Procedimientos recomendados para ajustar la escala del control DataGridView en formularios Windows Forms

Implementar el modo virtual mediante la carga de datos Just-In-Time en el control DataGridView de formularios Windows Forms

Referencia

DataGridView

VirtualMode

Otros recursos

Ajuste del rendimiento del control DataGridView en formularios Windows Forms