L'esempio seguente è finalizzato a mostrare come eseguire il popolamento di una DatagridView, a partire dalla connessione verso un database SQL Server, e dalla successiva esecuzione di una query. Supponendo di lavorare su un ipotetico Form di nome Form1, di aver predisposto in esso una DatagridView di nome DatagridView1, e di voler eseguire il popolamento di quest'ultima durante l'evento Load() del Form, potremmo utilizzare il seguente codice:

 

private void Form1_Load(object sender, EventArgs e) {

   SqlConnection connessione = new SqlConnection(<stringa_connessione>);

   SqlCommand comando = new SqlCommand(<query_da eseguire>, connessione);

   SqlDataAdapter adapter = new SqlDataAdapter(comando);

 

   DataTable dt = new DataTable();

   adapter.Fill(dt);

 

   BindingSource bs = new BindingSource();

   bs.DataSource = dt;

   dataGridView1.DataSource = bs;

}

Si notino i parametri da modificare, ovvero <stringa_connessione>, rappresentante una stringa di connessione verso un’istanza valida di SQL Server, e <query_da_eseguire>, ovvero una stringa contenente un un’istruzione T-SQL attraverso la quale popolare la DatagridView.

Il codice di cui sopra esegue le seguenti operazioni:

  • Utilizza la stringa di connessione fornita per effettuare la connessione verso la base dati
  • Crea, su tale connessione, un oggetto SqlCommand sulla base della query richiesta dall’utente
  • Esegue la query tramite un oggetto SqlDataAdapter, e successivo riempimento di una DataTable
  • Utilizza la DataTable, riempita con i risultati della query, come sorgente per un oggetto BindingSource
  • Infine, lega l’oggetto BindingSource alla DatagridView

L’intestazione delle colonne della DatagridView sarà in funzione dei nomi campo richiesti nella query, o – alternativamente – degli alias che gli saranno stati assegnati. Dunque, se per esempio avremo eseguito una query come questa:

SELECT Codice_Articolo, Des FROM Articoli

Otterremo una DatagridView con due colonne, di nome Codice_Articolo e Des. Utilizzando gli alias di campo, potremmo modificare l’intestazione delle colonne. Eseguendo ad esempio la query

SELECT Codice_Articolo AS Codice, Des AS Descrizione FROM Articoli

La DatagridView visualizzerà due colonne dal titolo Codice e Descrizione.

Eventuali filtri sulla query eseguita si possono ottenere mediante la proprietà Filter dell’oggetto BindingSource. In qualsiasi momento, tale proprietà può essere richiamata, utilizzando operatori SQL-like, su una colonna a piacere tra quelle visualizzate. Ad esempio, l’istruzione

bs.Filter = "Codice LIKE 'PROVA%'";

Avrà l’effetto di limitare il recordset esposto, relativo alla seconda query esemplificata, alle sole righe i cui valori della colonna Codice iniziano per la stringa PROVA.