Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Con la modalità virtuale, è possibile gestire l'interazione tra il controllo DataGridView e una cache dei dati personalizzata. Per implementare la modalità virtuale, impostare la proprietà VirtualMode su true e gestire uno o più degli eventi descritti in questo argomento. In genere si gestirà almeno l'evento CellValueNeeded, che abilita la ricerca dei valori del controllo nella cache dei dati.
Modalità associata e modalità virtuale
La modalità virtuale è necessaria solo quando è necessario integrare o sostituire la modalità associata. In modalità vincolata, si imposta la proprietà DataSource e il controllo carica automaticamente i dati dall'origine specificata e invia di nuovo le modifiche dell'utente. È possibile controllare quali colonne associate vengono visualizzate e l'origine dati stessa gestisce in genere operazioni come l'ordinamento.
Integrazione della modalità vincolata
È possibile integrare la modalità associata visualizzando colonne non associate insieme alle colonne associate. Questa operazione è talvolta denominata "modalità mista" ed è utile per visualizzare elementi come i valori calcolati o i 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 DataGridView di interagire con esso.
Per ulteriori informazioni sull'uso della modalità virtuale per gestire i valori nelle colonne non vincolate, consultare gli esempi negli argomenti di riferimento della proprietà DataGridViewCheckBoxColumn.ThreeState e della classe System.Windows.Forms.DataGridViewComboBoxColumn.
Sostituzione della modalità associata
Se la modalità vincolata non soddisfa le tue esigenze di prestazioni, è possibile gestire tutti i dati in una cache personalizzata tramite gestori di eventi in modalità virtuale. Ad esempio, è possibile utilizzare la modalità virtuale per implementare un meccanismo di caricamento dei dati just-in-time che recupera solo la quantità di dati necessaria da un database di rete 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 JIT, vedere Implementazione della modalità virtuale con caricamento just-In-Time dati nel controllo DataGridView di Windows Form.
Virtual-Mode Eventi
Se i dati sono di sola lettura, l'evento CellValueNeeded potrebbe essere l'unico evento da gestire. Altri eventi in modalità virtuale consentono di abilitare funzionalità specifiche, ad esempio le modifiche utente, l'aggiunta e l'eliminazione delle righe e le transazioni a livello di riga.
Alcuni eventi di DataGridView standard( ad esempio 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à virtuale. È anche possibile gestire gli eventi che consentono di mantenere i valori non archiviati in genere in un'origine dati associata, ad esempio testo descrizione comando della cella, testo dell'errore di cella e riga, dati del menu di scelta rapida di cella e riga e dati sull'altezza della riga.
Per altre informazioni sull'implementazione della modalità virtuale per gestire i dati di lettura/scrittura con un ambito di commit a livello di riga, consultare Procedura dettagliata: Implementazione della modalità virtuale nel controllo DataGridView di Windows Forms.
Per un esempio che realizza la modalità virtuale con un ambito di commit a livello di cella, vedere l'argomento di riferimento della proprietà VirtualMode.
Gli eventi seguenti si verificano solo quando la proprietà VirtualMode è impostata su true.
| Evento | 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 collegate. |
| CellValuePushed | Usato dal controllo per effettuare il commit dell'input dell'utente per una cella nella cache dei dati. Questo evento si verifica solo per le celle nelle colonne non collegate. Chiamare il metodo UpdateCellValue quando si modifica un valore memorizzato nella cache all'esterno di un gestore eventi CellValuePushed per assicurarsi che il valore corrente venga visualizzato nel controllo e applicare qualsiasi modalità di ridimensionamento automatico attualmente attiva. |
| NewRowNeeded | Utilizzato dal controllo per indicare la necessità di una nuova riga nella cache dei dati. |
| RowDirtyStateNeeded | Utilizzato dal controllo per determinare se una riga contiene modifiche non confermate. |
| 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 della proprietà VirtualMode.
| Avvenimenti | Descrizione |
|---|---|
| UserDeletingRow UserDeletedRow RowsRemoved RowsAdded |
Utilizzato dal controllo per indicare quando le righe vengono eliminate o aggiunte, 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 proprietà DataSource è impostata o la proprietà VirtualMode è true.Le descrizioni comandi delle celle vengono visualizzate solo quando il valore della proprietà ShowCellToolTips è true. |
| CellErrorTextNeeded RowErrorTextNeeded |
Utilizzato dal controllo per recuperare il testo di errore della cella o della riga quando la proprietà DataSource è impostata o la proprietà VirtualMode è true.Chiamare il metodo UpdateCellErrorText o il metodo UpdateRowErrorText quando si modifica il testo di errore della cella o della riga per assicurarsi che il valore corrente venga visualizzato nel controllo. Le icone di errore di cella e riga sono visualizzate quando i valori delle proprietà ShowCellErrors e ShowRowErrors sono true. |
| CellContextMenuStripNeeded RowContextMenuStripNeeded |
Utilizzato dal controllo per recuperare una cella o una riga ContextMenuStrip se la proprietà DataSource del controllo è impostata o se la proprietà VirtualMode è true. |
| RowHeightInfoNeeded RowHeightInfoPushed |
Utilizzato dal controllo per recuperare o archiviare le informazioni sull'altezza delle righe nella cache dei dati. Chiamare il metodo UpdateRowHeightInfo quando si modificano le informazioni sull'altezza della riga memorizzate nella cache all'esterno di un gestore eventi RowHeightInfoPushed per assicurarsi che il valore corrente venga utilizzato nella 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 il controllo DataGridView stesso. Per altre informazioni sull'uso efficiente degli stili di cella, il ridimensionamento automatico, le selezioni e la condivisione di righe, vedere Procedure consigliate per ridimensionare il controllo DataGridView di Windows Forms.
Vedere anche
- DataGridView
- VirtualMode
- Ottimizzazione delle prestazioni nel controllo DataGridView di Windows Forms
- Migliori pratiche per ridimensionare il controllo DataGridView di Windows Forms
- Procedura dettagliata: implementazione della modalità virtuale nel controllo DataGridView di Windows Forms
- Implementazione della modalità virtuale con il caricamento di dati just-In-Time nel controllo DataGridView di Windows Form
.NET Desktop feedback