Utilizzo della riga per i nuovi record del controllo DataGridView di Windows Form

Quando si utilizza un controllo DataGridView per modificare i dati in un'applicazione, spesso si desidera consentire agli utenti di aggiungere nuove righe di dati all'archivio dati. Il controllo DataGridView supporta questa funzionalità fornendo una riga per i nuovi record, che viene sempre visualizzata come ultima riga e contrassegnata con un asterisco (*) nell'intestazione. Nelle seguenti sezioni vengono discussi alcuni degli aspetti da considerare durante la programmazione se si utilizza una riga per i nuovi record.

Visualizzazione della riga per i nuovi record

Utilizzare la proprietà AllowUserToAddRows per indicare se la riga per i nuovi record viene visualizzata. Il valore predefinito di questa proprietà è true.

Se i dati sono associati, la riga per i nuovi record viene visualizzata se la proprietà AllowUserToAddRows del controllo e la proprietà IBindingList.AllowNew dell'origine dati sono entrambe true. Se una delle due proprietà è false, la riga non viene visualizzata.

Compilazione della riga per i nuovi record con dati predefiniti

Quando l'utente seleziona la riga per i nuovi record come riga corrente, il controllo DataGridView genera l'evento DefaultValuesNeeded

Questo evento fornisce l'accesso alla nuova riga DataGridViewRow e consente di compilarla con dati predefiniti. Per ulteriori informazioni, vedere Procedura: specificare i valori predefiniti per le nuove righe nel controllo DataGridView di Windows Form

L'insieme Rows

La riga per nuovi record è contenuta nell'insieme Rows del controllo DataGridView, ma si comporta in modo diverso sotto due aspetti:

  • La riga per i nuovi record non può essere rimossa dall'insieme Rows a livello di codice, altrimenti verrà generata un'eccezione InvalidOperationException. L'utente inoltre non può eliminare la riga per i nuovi record perché il metodo DataGridViewRowCollection.Clear non rimuove tale riga dall'insieme Rows.

  • Non è possibile aggiungere alcuna riga dopo la riga per i nuovi record, altrimenti verrà generata un'eccezione InvalidOperationException. Di conseguenza, la riga per i nuovi record è sempre l'ultima riga del controllo DataGridView. I metodi che consentono di aggiungere righe a DataGridViewRowCollection, Add, AddCopy e AddCopies chiamano tutti internamente i metodi di inserimento quando è presente la riga per i nuovi record.

Personalizzazione della visualizzazione della riga per i nuovi record

Quando viene creata, la riga per i nuovi record è basata sulla riga specificata dalla proprietà RowTemplate. Eventuali stili di cella non specificati per questa riga vengono ereditati da altre proprietà. Per ulteriori informazioni sull'ereditarietà degli stili delle celle, vedere Stili della cella nel controllo DataGridView Windows Form.

I valori iniziali visualizzati dalle celle nella riga per i nuovi record vengono recuperati dalla proprietà DefaultNewRowValue di ciascuna cella. Per le celle di tipo DataGridViewImageCell, la proprietà restituisce un'immagine segnaposto, mentre negli altri casi restituisce null. Sebbene sia possibile eseguire l'override di questa proprietà per restituire un valore personalizzato, i valori iniziali possono essere sostituiti da un gestore eventi DefaultValuesNeeded quando la riga per i nuovi record diventa attiva.

Le icone standard per l'intestazione della riga, ossia una freccia o un asterisco, non sono esposte pubblicamente. Se si desidera personalizzare le icone, è necessario creare una classe DataGridViewRowHeaderCell personalizzata.

Le icone standard utilizzano la proprietà ForeColor dello stile DataGridViewCellStyle in uso nella cella dell'intestazione di riga. Le icone standard non vengono rappresentate se lo spazio disponibile non è sufficiente a visualizzarle completamente.

Se per la cella dell'intestazione di riga è impostato un valore di stringa e lo spazio non è sufficiente sia per il testo che per l'icona, verrà prima rimossa l'icona.

Ordinamento

In modalità non associata i nuovi record vengono sempre aggiunti alla fine del controllo DataGridView, anche se il contenuto del controllo è stato ordinato. Sarà quindi necessario applicare nuovamente l'ordinamento per visualizzare le righe nella posizione corretta (comportamento simile a quello del controllo ListView).

In modalità associata e in modalità virtuale il comportamento dell'inserimento quando viene applicato un ordinamento dipende dall'implementazione del modello dati. In ADO.NET, la riga viene immediatamente ordinata nella posizione corretta.

Altre note relative alla riga per i nuovi record

Non è possibile impostare la proprietà Visible di questa riga su false, altrimenti verrà generata un'eccezione InvalidOperationException.

La riga per i nuovi record viene sempre creata come non selezionata.

Modalità virtuale

Se si implementa la modalità virtuale, è necessario tenere traccia di quando è necessaria una riga per i nuovi record nel modello dati e di quando eseguire il rollback per l'aggiunta di tale riga. L'implementazione esatta di questa funzionalità dipende dall'implementazione del modello dati e dalla relativa semantica delle transazioni, ad esempio se l'ambito del commit è a livello di cella o di riga. Per ulteriori informazioni, vedere Modo virtuale nel controllo DataGridView di Windows Form.

Vedere anche

Attività

Procedura: specificare i valori predefiniti per le nuove righe nel controllo DataGridView di Windows Form

Riferimenti

DataGridView

DataGridView.DefaultValuesNeeded

Altre risorse

Immissione di dati nel controllo DataGridView Windows Form