back to top

Utilizzo del controllo DataGridView

Il controllo DataGridView è uno di quelli disponibili in MS Visual Studio per applicazioni Windows Form e permette di operare su dati tabulari e personalizzarne la visualizzazione. Questo controllo mette a disposizione un certo numero di proprietà, metodi ed eventi da utilizzare secondo le proprie esigenze. Data l’importanza relativa alla gestione di dati tabulari in applicazioni Windows Form (pratica molto diffusa) nel presente articolo vedremo alcuni trucchi e suggerimenti relativi a questo fondamentale controllo.

In tutti gli esempi seguenti considereremo un ambiente costituito da una semplice applicazione Windows Form creata in Visual Studio e costituita semplicemente da un controllo DataGridView (denominato dataGridViewTest), posto nell’unico form dell’applicazione (Form1). Mentre come origine dati utilizzeremo tabelle del database di SQL Server Northwind.

Popolare una DataGridView

Nel nostro form inseriamo un controllo Button (denominato caricaBtn) e generiamo il relativo evento Click. Per popolare la nostra griglia con i dati della tabella dbo.Employees del database Northwind (contiene una lista di impiegati) possiamo scrivere il seguente codice

public partial class Form1 : Form
{
  private SqlDataAdapter da;
  private SqlConnection conn;
  BindingSource bsource = new BindingSource();
  DataSet ds = null;
  string sql;
  
  public Form1()
  {
    InitializeComponent();
  }
  
  private void caricaBtn_Click(object sender, EventArgs e)
  {
    CaricaDati();
  }
  
  private void CaricaDati()
  {
    string connectionString = "Data Source=localhost;Initial Catalog=Northwind;";
    conn = new SqlConnection(connectionString);
    
    sql = "SELECT * FROM dbo.Employees";
    
    da = new SqlDataAdapter(sql, conn);
    conn.Open();
    ds = new DataSet();
    
    SqlCommandBuilder commandBuilder = new SqlCommandBuilder(da);
    da.Fill(ds, "Impiegati");
    
    bsource.DataSource = ds.Tables["Impiegati"];
    dataGridViewTest.DataSource = bsource;
  }
}

Cliccando sul button Carica il risultato sarà il seguente

Modificare i dati in griglia e salvare le modifiche sul database

Se vogliamo modificare i dati visualizzati e salvare le modifiche sul database basta inserire il seguente codice nell’evento Click di un altro button (salvaBtn)

private void salvaBtn_Click(object sender, EventArgs e)
{
  DataTable dt = ds.Tables["Impiegati"];
  this.dataGridViewTest.BindingContext[dt].EndCurrentEdit();
  this.da.Update(dt);
}

A questo punto carichiamo i dati, modifichiamo qualcosa (ad esempio al primo dipendente cambiamo il nome da Nancy ad Angela) e clicchiamo sul button Salva. Il dato viene così salvato sul database e infatti se ricarichiamo la tabella ecco cosa vedremo

Richiedere una conferma prima di cancellare una riga

Se desideriamo richiedere all’utente una conferma prima di eliminare una riga della griglia basta agganciarsi all’evento UserDeletingRow del controllo DataGridView escrivere il seguente codice

private void dataGridViewTest_UserDeletingRow(object sender, 
DataGridViewRowCancelEventArgs e)
{
  if (!e.Row.IsNewRow)
  {
    DialogResult res = MessageBox.Show("Si desidera eliminare la riga corrente?", "Conferma di cancellazione", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if (res == DialogResult.No) e.Cancel = true;
  }
}

Se nel nostro form selezioniamo ora una riga e premiamo il tasto Canc della tastiera eccoil messaggio che ci comparirà

rispondendo si la riga verrà cancellata, rispondendo no l’evento verrà annullato.

Ridimensionare le colonne

Per adattare la larghezza delle colonne ai dati visualizzati basta scrivere il seguente codice

dataGridViewTest.AutoResizeColumns();
dataGridViewTest.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

Al solito per provare questo codice possiamo inserirlo all’interno dell’evento click di un button e se partiamo da una situazione del genere

dopo aver eseguito il codice avremo la seguente situazione

In questo esempio io ho scelto l’opzione di ridimensionamento AllCells ma è possibile anche scegliere altre opzioni a seconda delle proprie esigenze

Effettuare iterazioni sulle righe

A volte può essere utile effettuare iterazioni sulle righe di una griglia. Se ad esempio vogliamo calcolare il totale di una colonna Stipendio relativa alla tabella degli impiegati possiamo utilizzare il seguente metodo

private double CalcolaTotale()
{
  double tot = 0;
  int i = 0;  
  for (i = 0; i < dataGridViewTest.Rows.Count; i++)
  {
    tot = tot + Convert.ToDouble(dataGridViewTest.Rows[i].Cells["Stipendio"].Value);
  }
  return tot;
}

Questo metodo effettua semplicemente un ciclo for sulle righe della griglia e incrementa ogni volta il valore totale con il valore che trova nella colonna Stipendio della riga corrente.

Cambiare le intestazioni delle colonne

Per cambiare l'intestazione di una colonna basta modificare la proprietà HeaderText della colonna desiderata

dataGridViewTest.Columns[0].HeaderText = "Pippo";
dataGridViewTest.Columns[1].HeaderText = "Pluto";

La numerazione delle colonne è in base zero quindi la prima avrà indice [0], la seconda [1] e così via.

Cambiare il colore delle celle, delle righe ed il tipo dei bordi

E' possibile personalizzare a proprio piacimento l'apparenza della griglia con poche semplici linee di codice

//Cambia il colore del testo contenuto nelle celle
this.dataGridViewTest.DefaultCellStyle.ForeColor = Color.Coral;
//Cambia il colore di sfondo di ogni riga
this.dataGridViewTest.RowsDefaultCellStyle.BackColor = Color.AliceBlue;
//Cambia il colore delle linee della griglia
this.dataGridViewTest.GridColor = Color.Blue;
//Cambia lo stile dei bordi della griglia
this.dataGridViewTest.BorderStyle = BorderStyle.Fixed3D;

Ecco il risultato di queste impostazioni

Nascondere la visualizzazione di una colonna

Per nascondere la visualizzazione di una colonna basta scrivere

this.dataGridViewTest.Columns[0].Visible = false;

in questo modo dopo il caricamento dei dati la prima colonna non verrà visualizzata.

Formattare i dati

Il controllo DataGridView espone alcune proprietà che copnsentono di formattare i dati secondo le proprie esigenze. Ad esempio se si vogliono visualizzare i dati di una colonna in formato valuta (euro, dollaro, ecc.) basta scrivere

this.dataGridViewTest.Columns["Stipendio"].DefaultCellStyle.Format = "c";

Se invece si vuole visualizzare un determinato valore in corrispondenza di valori null presenti in una cella possiamo scrivere

this.dataGridViewTest.DefaultCellStyle.NullValue = "Vuoto";

in questo modo nelle celle aventi valore null verrà visualizzata la stringa Vuoto.

Cambiare l'ordine delle colonne

Per cambiare l'ordine delle colonne di una griglia dobbiamo operare sulla proprietà DisplayIndex della stessa

dataGridViewTest.Columns["CustomerID"].DisplayIndex = 4;
dataGridViewTest.Columns["OrderID"].DisplayIndex = 2;
dataGridViewTest.Columns["EmployeeID"].DisplayIndex = 5;
dataGridViewTest.Columns["OrderDate"].DisplayIndex = 3;
dataGridViewTest.Columns["Freight"].DisplayIndex = 1;
dataGridViewTest.Columns["ShipCountry"].DisplayIndex = 6;
dataGridViewTest.Columns["ShipName"].DisplayIndex = 0;

Il risultato dell'esecuzione del codice precedente è il questo

Chiaramente molte delle operazioni che abbiamo fatto via codice è possibile farle anche visivamente tramite la finestra Properties di Visual Studio.

Ad esempio l'impostazione del tipo di BorderStyle

ma l'importante è capirne il concetto e gli effetti.

Quelle viste nel presente articolo sono solo alcune delle molteplici funzionalità messe a disposizione dal controllo DataGridView. Come sempre vi invito ad approfondire lo studio di questo controllo tramite la documentazione ufficiale Microsoft e, soprattutto, facendo voi stessi prove sulle varie funzionalità.

Pubblicitร 

Leggi anche...

Accorgimenti per la scrittura di codice efficiente in C#

Nella scrittura del codice delle proprie applicazioni uno sviluppatore...

Visual Studio 2012: l’ambiente di sviluppo di casa Microsoft

Visual Studio 2012 è l'ultima versione dell'ambiente di sviluppo...

Sviluppare in ASP.Net con Visual Studio

L'obiettivo della presente guida è quello di introdurvi alle...

Algoritmi di ordinamento in C#

L'ordinamento di una lista di oggetti è uno dei...

Guida Visual Studio 2008

L'uscita di Visual Studio 2005 ha rappresentato la più...

Sviluppare web app con ASP.Net

Da qualche anno Microsoft ha lanciato sul mercato una...
Pubblicitร