C# Visualizzare Risultati Query in DatagridView (it-IT)
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.