Cenni preliminari sul controllo DataGrid (Windows Form)

Aggiornamento: novembre 2007

Nota:

Benché il controllo DataGridView sostituisca il controllo DataGrid precedente aggiungendo funzionalità, il controllo DataGrid viene mantenuto per compatibilità con le versioni precedenti e per utilizzo futuro se lo si desidera. Per ulteriori informazioni, vedere Differenze tra i controlli DataGridView e DataGrid di Windows Form.

Il controllo DataGrid Windows Form visualizza i dati in una serie di righe e colonne. Il caso più semplice si verifica quando la griglia è associata a un'origine dati con una singola tabella che non contiene alcuna relazione. In questo caso, i dati sono visualizzati in righe e colonne semplici, come in un foglio di lavoro. Per ulteriori informazioni sull'associazione dei dati ad altri controlli, vedere Associazione dati e Windows Form.

Se DataGrid è associato a dati con più tabelle correlate e sulla griglia è abilitato lo spostamento, in ciascuna riga della griglia verranno visualizzati pulsanti di espansione Con un espansore, l'utente può spostarsi da una tabella padre a una tabella figlio. Facendo clic su un nodo verrà visualizzata la tabella figlio e facendo clic sul pulsante Indietro verrà visualizzata la tabella padre originale. In questo modo, la griglia consente di visualizzare le relazioni gerarchiche tra le varie tabelle.

Nell'immagine riportata di seguito viene illustrato un controllo DataGrid associato a dati con più tabelle.

DataGrid associato a dati con più tabelle

DataGrid associato a dati con più tabelle

Il controllo DataGrid può fornire un'interfaccia utente per un dataset nonché funzionalità di spostamento tra tabelle correlate, di modifica e formattazione avanzata.

La visualizzazione e la modifica dei dati rappresentano due funzioni distinte: l'interfaccia utente viene gestita dal controllo, mentre gli aggiornamenti dei dati vengono gestiti dall'architettura di associazione dati di Windows Form e dai provider di dati di .NET Framework. Questo consente la sincronizzazione di più controlli associati alla stessa origine dati.

Nota di Visual Basic:

Se si ha dimestichezza con il controllo DataGrid di Visual Basic 6.0, sarà possibile notare alcune differenze significative nel controllo DataGrid Windows Form.

Quando la griglia è associata a un oggetto DataSet, le colonne e le righe vengono create, formattate e riempite automaticamente. Per ulteriori informazioni, vedere Associazione dati e Windows Form. Dopo la generazione del controllo DataGrid, è possibile aggiungere, eliminare, riorganizzare e formattare le colonne e le righe in base alle specifiche esigenze.

Associazione di dati al controllo

Per il corretto funzionamento del controllo DataGrid, è necessario che il controllo venga associato a un'origine dati mediante le proprietà DataSource e DataMember in fase di progettazione oppure mediante il metodo SetDataBinding in fase di esecuzione. Questo consente di associare il controllo DataGrid a un oggetto di origine dati del quale è stata creata un'istanza, ad esempio DataSet o DataTable. Il controllo DataGrid indica i risultati delle operazioni eseguite sui dati. La maggior parte delle operazioni relative ai dati non viene eseguita mediante DataGrid, bensì tramite l'origine dati.

Se i dati nel dataset associato vengono aggiornati attraverso un qualsiasi meccanismo, il controllo DataGrid rifletterà tali modifiche. Se la proprietà ReadOnly della griglia di dati e dei relativi stili di tabella e di colonna è impostata su false, i dati del dataset possono essere aggiornati mediante il controllo DataGrid.

In DataGrid può essere visualizzata una sola tabella alla volta. Se tra le tabelle è stata definita una relazione padre-figlio, l'utente può spostarsi tra le tabelle correlate per selezionare la tabella da visualizzare nel controllo DataGrid. Per informazioni relative all'associazione di un controllo DataGrid a un'origine dati ADO.NET in fase di progettazione o di esecuzione, vedere Procedura: associare il controllo DataGrid Windows Form a un'origine dati.

Le origini dati valide per il controllo DataGrid sono:

Se l'origine dati utilizzata è un dataset, quest'ultimo può essere un oggetto nel form o un oggetto passato al form da un servizio Web XML. È possibile effettuare un'associazione a dataset tipizzati o non tipizzati.

È inoltre possibile associare un controllo DataGrid a strutture aggiuntive se gli oggetti della struttura, ad esempio gli elementi in una matrice, espongono proprietà pubbliche. Nella griglia saranno visualizzate tutte le proprietà pubbliche degli elementi della struttura. Se ad esempio il controllo DataGrid viene associato a una matrice di oggetti Customer, nella griglia saranno visualizzate tutte le proprietà pubbliche di questi oggetti. In alcuni casi questo significa che, sebbene sia possibile eseguire l'associazione alla struttura, la struttura risultante potrebbe non avere utilità pratica. È possibile ad esempio effettuare l'associazione a una matrice di integer, ma poiché il tipo di dati Integer non supporta una proprietà pubblica, nella griglia non sarà possibile visualizzare dati.

È possibile effettuare l'associazione alle strutture che seguono, se i relativi elementi espongono proprietà pubbliche:

  • Qualsiasi componente che implementa l'interfaccia IList, tra i quali matrici unidimensionali.

  • Qualsiasi componente che implementa l'interfaccia IListSource.

  • Qualsiasi componente che implementa l'interfaccia IBindingList.

Per ulteriori informazioni sulle possibili origini dati, vedere Origini dati supportate da Windows Form.

Visualizzazione della griglia

Molto spesso il controllo DataGrid viene utilizzato per visualizzare una singola tabella di dati da un dataset. Il controllo può essere utilizzato anche per visualizzare più tabelle, comprese le tabelle correlate. La visualizzazione della griglia viene regolata automaticamente in base all'origine dati. Nella tabella seguente viene indicato cosa viene visualizzato per le varie configurazioni.

Contenuto del dataset

Informazioni visualizzate

Tabella singola.

La tabella viene visualizzata in una griglia.

Più tabelle.

Nella griglia viene visualizzata una struttura ad albero che l'utente può scorrere per individuare la tabella da visualizzare.

Più tabelle correlate.

Nella griglia viene visualizzata una struttura ad albero utilizzabile per selezionare le tabelle, oppure è possibile fare in modo che la griglia visualizzi la tabella padre. I record nella tabella padre consentono agli utenti di passare alle relative righe figlio.

Nota:

Le tabelle in un dataset vengono correlate utilizzando un oggetto DataRelation.

Quando viene visualizzata una tabella mediante il controllo DataGrid e la proprietà AllowSorting è impostata su true, i dati possono essere riordinati facendo clic sulle intestazioni delle colonne. L'utente può inoltre aggiungere righe e modificare le celle.

Le relazioni tra un insieme di tabelle vengono visualizzate agli utenti utilizzando una struttura di spostamento padre-figlio. Le tabelle padre rappresentano il livello più elevato dei dati, mentre le tabelle figlio corrispondono alle tabelle di dati derivate dalle singole voci delle tabelle padre. In tutte le righe padre contenenti una tabella figlio vengono visualizzati pulsanti di espansione. Facendo clic su un espansore viene generato un elenco di collegamenti in stile Web alle tabelle figlio. Quando l'utente fa clic su un collegamento, la tabella figlio viene visualizzata. Facendo clic sull'icona per l'attivazione o la disattivazione della visualizzazione delle righe padre (Icona per l'attivazione o la disattivazione della visualizzazione delle righe padre) è possibile nascondere le informazioni relative alla tabella padre o ripristinarle nel caso in cui siano state precedentemente nascoste. L'utente può fare clic sul pulsante Indietro per tornare alla tabella precedentemente visualizzata.

Colonne e righe

Il controllo DataGrid è costituito da un insieme di oggetti DataGridTableStyle contenuti nella proprietà TableStyles del controllo DataGrid. Uno stile di tabella può contenere un insieme di oggetti DataGridColumnStyle contenuti nella proprietà GridColumnStyles di DataGridTableStyle. Per modificare le proprietà TableStyles e GridColumnStyles è possibile utilizzare gli editor di insiemi accessibili dalla finestra Proprietà.

GridTableStylesCollection consente di accedere a qualsiasi oggetto DataGridTableStyle associato al controllo DataGrid. GridTableStylesCollection può essere modificato nella finestra di progettazione mediante l'editor dell'insieme DataGridTableStyle oppure a livello di codice mediante la proprietà TableStyles del controllo DataGrid.

Nella figura seguente sono illustrati gli oggetti inclusi nel controllo DataGrid.

Oggetti inclusi nel controllo DataGrid

Per sincronizzare gli stili di tabella e di colonna con gli oggetti DataTable e DataColumn, è possibile impostare le rispettive proprietà MappingName sulle proprietà TableName e ColumnName appropriate. Quando un oggetto DataGridTableStyle senza stili di colonna viene aggiunto a un controllo DataGrid associato a un'origine dati valida e la proprietà MappingName di tale stile di tabella è impostata su una proprietà TableName valida, verrà creato un insieme di oggetti DataGridColumnStyle per lo stile di tabella. Per ciascun oggetto DataColumn trovato nell'insieme Columns di DataTable, verrà aggiunto un oggetto DataGridColumnStyle corrispondente a GridColumnStylesCollection. Per accedere a GridColumnStylesCollection, è possibile utilizzare la proprietà GridColumnStyles di DataGridTableStyle. Per aggiungere o eliminare le colonne dalla griglia è possibile utilizzare il metodo Add o Remove su GridColumnStylesCollection. Per ulteriori informazioni, vedere Procedura: aggiungere tabelle e colonne al controllo DataGrid Windows Form e Procedura: eliminare o nascondere colonne nel controllo DataGrid Windows Form.

Un insieme di tipi di colonna estende la classe DataGridColumnStyle aggiungendo funzionalità avanzate di modifica e formattazione. Tutti i tipi di colonna ereditano dalla classe base DataGridColumnStyle. La classe creata dipende dalla proprietà DataType dell'oggetto DataColumn su cui si basa DataGridColumn. Ad esempio, un oggetto DataColumn la cui proprietà DataType è impostata su Boolean verrà associato a DataGridBoolColumn. Nella tabella riportata di seguito viene fornita una descrizione di ciascun tipo di colonna.

Tipo di colonna

Descrizione

DataGridTextBoxColumn

Accetta e visualizza i dati come stringhe formattate o non formattate. Dispone delle stesse funzionalità di modifica dati disponibili in un semplice TextBox. Eredita da DataGridColumnStyle.

DataGridBoolColumn

Accetta e visualizza i valori true, false e Null. Eredita da DataGridColumnStyle.

Facendo doppio clic sul bordo destro di una colonna è possibile ridimensionarla visualizzandone completamente la didascalia e adattandone la larghezza in base alla voce più lunga.

Stili di tabella e di colonna

Una volta stabilito il formato predefinito del controllo DataGrid, è possibile personalizzare i colori che verranno utilizzati quando si visualizzano alcune tabelle nella griglia dei dati.

Per effettuare questa operazione, è necessario creare istanze della classe DataGridTableStyle. Gli stili di tabella consentono di indicare per tabelle specifiche una formattazione diversa da quella predefinita del controllo DataGrid. Per ciascuna tabella è possibile definire uno solo stile alla volta.

In alcuni casi, è possibile che una determinata colonna di una tabella dati debba essere visualizzata in modo diverso rispetto alle altre colonne. In questo caso, è possibile utilizzare la proprietà GridColumnStyles per creare un insieme personalizzato di stili di colonna.

La correlazione tra gli stili di colonna e le colonne di un dataset è simile a quella esistente tra gli stili di tabella e le tabelle dati. Proprio come per ciascuna tabella è possibile definire un unico stile di tabella alla volta, così per ciascuna colonna è possibile definire un unico stile di colonna, in un determinato stile di tabella. Questa relazione è definita nella proprietà MappingName della colonna.

Se è stato creato uno stile di tabella senza aggiungere stili di colonna, Visual Studio aggiungerà automaticamente gli stili di colonna predefiniti durante la creazione del form e della griglia in fase di esecuzione. Se invece è stato creato uno stile di tabella con stili di colonna, non verrà creato alcuno stile di colonna. Inoltre, affinché le colonne vengano visualizzate nella griglia, sarà necessario definire gli stili di colonna e assegnare ad essi il nome di mapping.

Poiché è necessario specificare quali colonne devono essere incluse nella griglia dei dati assegnando ad esse uno stile di colonna e alle colonne non è stato assegnato alcuno stile di colonna, è possibile includere nel dataset colonne di dati che non vengono visualizzate nella griglia. Tuttavia, poiché la colonna di dati è inclusa nel dataset, è possibile modificare a livello di codice i dati che non vengono visualizzati.

Nota:

In generale, si consiglia di creare stili di colonna e di aggiungerli al relativo insieme di stili prima di aggiungere stili di tabella all'insieme di stili di tabella. Quando si aggiunge all'insieme uno stile di tabella vuoto, gli stili di colonna vengono generati automaticamente. Di conseguenza, se si tenta di aggiungere all'insieme degli stili di colonna nuovi stili di colonna con valori MappingName duplicati, verrà generata un'eccezione.

In alcuni casi, sarà necessario semplicemente rimuovere una colonna dall'insieme, ad esempio nel caso in cui il dataset contenga 50 colonne e si desideri includerne soltanto 49. In questo caso, risulta più agevole importare tutte le 50 colonne e rimuoverne solo una a livello di codice, anziché aggiungere singolarmente tutte le 49 colonne desiderate.

Formattazione

La formattazione applicabile al controllo DataGrid comprende gli stili dei bordi, gli stili delle linee della griglia, i tipi di carattere, le proprietà della didascalia, l'allineamento dei dati e l'alternanza dei colori di sfondo nelle righe. Per ulteriori informazioni, vedere Procedura: formattare il controllo DataGrid di Windows Form.

Eventi

Oltre agli eventi di controllo comuni, ad esempio MouseDown, Enter e Scroll, il controllo DataGrid supporta gli eventi associati alla modifica e allo spostamento all'interno della griglia. La proprietà CurrentCell determina la cella selezionata. L'evento CurrentCellChanged viene generato quando l'utente si sposta in una nuova cella. L'evento Navigate viene generato quando l'utente si sposta in una nuova tabella mediante relazioni padre-figlio. L'evento BackButtonClick viene generato quando l'utente fa clic sul pulsante Indietro durante la visualizzazione di una tabella figlio, mentre l'evento ShowParentDetailsButtonClick viene generato quando viene fatto clic sull'icona per l'attivazione o la disattivazione della visualizzazione delle righe padre.

Vedere anche

Attività

Procedura: associare il controllo DataGrid Windows Form a un'origine dati

Procedura: aggiungere tabelle e colonne al controllo DataGrid Windows Form

Procedura: eliminare o nascondere colonne nel controllo DataGrid Windows Form

Procedura: formattare il controllo DataGrid di Windows Form

Altre risorse

Controllo DataGrid (Windows Form)