Modo virtuale nel controllo DataGridView di Windows Form

Con la modalità virtuale è possibile gestire l'interazione tra il DataGridView controllo e una cache di dati personalizzata. Per implementare la modalità virtuale, impostare la proprietà su e gestire uno o più VirtualMode eventi descritti in questo true argomento. In genere si gestirà almeno CellValueNeeded l'evento , che consente al controllo di cercare valori nella cache dei dati.

Modalità associata e modalità virtuale

La modalità virtuale è necessaria solo quando è necessario integrare o sostituire la modalità associata. In modalità associata si imposta la proprietà e il controllo carica automaticamente i dati dall'origine specificata e invia nuovamente le modifiche DataSource dell'utente. È possibile controllare quali colonne associate vengono visualizzate e l'origine dati stessa gestisce in genere operazioni quali l'ordinamento.

Integrazione della modalità associata

È possibile integrare la modalità associata visualizzando le colonne non associate insieme alle colonne associate. Questa operazione è talvolta denominata "modalità mista" ed è utile per visualizzare elementi come valori calcolati o controlli dell'interfaccia utente.

Poiché le colonne non associate sono esterne all'origine dati, vengono ignorate dalle operazioni di ordinamento dell'origine dati. Pertanto, quando si abilita l'ordinamento in modalità mista, è necessario gestire i dati non associati in una cache locale e implementare la modalità virtuale per consentire al controllo di DataGridView interagire con esso.

Per altre informazioni sull'uso della modalità virtuale per mantenere i valori nelle colonne non associate, vedere gli esempi negli argomenti di riferimento sulle proprietà DataGridViewCheckBoxColumn.ThreeState System.Windows.Forms.DataGridViewComboBoxColumn e sulle classi.

Sostituzione della modalità associata

Se la modalità associata non soddisfa le esigenze di prestazioni, è possibile gestire tutti i dati in una cache personalizzata tramite gestori eventi in modalità virtuale. Ad esempio, è possibile usare la modalità virtuale per implementare un meccanismo di caricamento dei dati JUST-In-Time che recupera solo la quantità di dati da un database in rete necessaria per ottenere prestazioni ottimali. Questo scenario è particolarmente utile quando si lavora con grandi quantità di dati tramite una connessione di rete lenta o con computer client con una quantità limitata di RAM o spazio di archiviazione.

Per altre informazioni sull'uso della modalità virtuale in uno scenario just-in-time, vedere Implementazione della modalità virtuale con il caricamento dei dati JUST-In-Timenel controllo DataGridView Windows Forms .

Virtual-Mode eventi

Se i dati sono di sola lettura, l'evento potrebbe essere CellValueNeeded l'unico evento che sarà necessario gestire. Altri eventi in modalità virtuale consentono di abilitare funzionalità specifiche come le modifiche utente, l'aggiunta e l'eliminazione di righe e le transazioni a livello di riga.

Alcuni eventi standard ( ad esempio gli eventi che si verificano quando gli utenti aggiungono o eliminano righe o quando i valori delle celle vengono modificati, analizzati, convalidati o formattati) sono utili anche in modalità DataGridView virtuale. È anche possibile gestire gli eventi che consentono di gestire i valori in genere non archiviati in un'origine dati associata, ad esempio il testo della descrizione comando della cella, il testo degli errori di cella e riga, i dati dei menu di scelta rapida di celle e righe e i dati relativi all'altezza delle righe.

Per altre informazioni sull'implementazione della modalità virtuale per gestire i dati di lettura/scrittura con un ambito di commit a livello di riga, vedere Procedura dettagliata: Implementazione della modalità virtuale nel controllo DataGridView Windows Forms.

Per un esempio che implementa la modalità virtuale con un ambito di commit a livello di cella, vedere VirtualMode l'argomento di riferimento sulla proprietà .

Gli eventi seguenti si verificano solo quando VirtualMode la proprietà è impostata su true .

Event Descrizione
CellValueNeeded Utilizzato dal controllo per recuperare un valore di cella dalla cache dei dati per la visualizzazione. Questo evento si verifica solo per le celle nelle colonne non associate.
CellValuePushed Utilizzato dal controllo per eseguire il commit dell'input dell'utente per una cella nella cache dei dati. Questo evento si verifica solo per le celle nelle colonne non associate.

Chiamare il metodo quando si modifica un valore memorizzato nella cache all'esterno di un gestore eventi per assicurarsi che il valore corrente sia visualizzato nel controllo e per applicare le modalità di ridimensionamento automatico attualmente UpdateCellValue CellValuePushed in vigore.
NewRowNeeded Utilizzato dal controllo per indicare la necessità di una nuova riga nella cache dei dati.
RowDirtyStateNeeded Utilizzato dal controllo per determinare se in una riga sono presenti modifiche di cui non è stato eseguito ilcommitted.
CancelRowEdit Utilizzato dal controllo per indicare che una riga deve ripristinare i valori memorizzati nella cache.

Gli eventi seguenti sono utili in modalità virtuale, ma possono essere usati indipendentemente dall'impostazione VirtualMode della proprietà .

Eventi Descrizione
UserDeletingRow

UserDeletedRow

RowsRemoved

RowsAdded
Utilizzato dal controllo per indicare quando vengono eliminate o aggiunte righe, consentendo di aggiornare di conseguenza la cache dei dati.
CellFormatting

CellParsing

CellValidating

CellValidated

RowValidating

RowValidated
Utilizzato dal controllo per formattare i valori delle celle per la visualizzazione e per analizzare e convalidare l'input dell'utente.
CellToolTipTextNeeded Utilizzato dal controllo per recuperare il testo della descrizione comando della cella quando la DataSource proprietà è impostata o VirtualMode la proprietà è true .

Le descrizioni comandi delle celle vengono visualizzate solo quando il ShowCellToolTips valore della proprietà è true .
CellErrorTextNeeded

RowErrorTextNeeded
Utilizzato dal controllo per recuperare il testo dell'errore di cella o riga quando la DataSource proprietà è impostata o VirtualMode la proprietà è true .

Chiamare il metodo o il metodo quando si modifica il testo dell'errore della cella o della riga per assicurarsi che il valore corrente UpdateCellErrorText sia visualizzato nel controllo UpdateRowErrorText .

I glifi degli errori di cella e riga vengono visualizzati quando i ShowCellErrors valori delle proprietà e sono ShowRowErrors true .
CellContextMenuStripNeeded

RowContextMenuStripNeeded
Utilizzato dal controllo per recuperare una cella o una riga quando la proprietà del controllo è ContextMenuStrip DataSource impostata o VirtualMode la proprietà è true .
RowHeightInfoNeeded

RowHeightInfoPushed
Utilizzato dal controllo per recuperare o archiviare le informazioni sull'altezza delle righe nella cache dei dati. Chiamare il metodo quando si modificano le informazioni sull'altezza della riga memorizzate nella cache all'esterno di un gestore eventi per assicurarsi che il valore corrente sia utilizzato nella UpdateRowHeightInfo RowHeightInfoPushed visualizzazione del controllo .

Procedure consigliate in modalità virtuale

Se si implementa la modalità virtuale per lavorare in modo efficiente con grandi quantità di dati, è anche necessario assicurarsi di lavorare in modo efficiente con DataGridView il controllo stesso. Per altre informazioni sull'uso efficiente di stili di cella, ridimensionamento automatico, selezioni e condivisione di righe, vedere Procedure consigliate per ridimensionare il controllo DataGridView Windows Forms.

Vedi anche