Dopo aver aggiunto i dati nella nostra GridView (ad esempio tramite XML come vedete qui), può capitare di voler creare un meccanismo di filtraggio, soprattutto in presenza di molti dati.

Possiamo creare un meccanismo attraverso il quale cercare nella GrdiView in base a ciò che scriviamo in una TextBox, il tutto in tempo reale.

Prima di tutto aggiungete una TextBox al Form dove c'è la GridView.

Il .NET Framework per certi versi è davvero ottimo.

Quello che vediamo oggi è come riempire una GridView da dati presi da un file XML.

Come potremo vedere, la cosa sarà molto semplice (soprattutto se non abbiamo pretese di personalizzazione); così semplice che neanche vi dirò com'è strutturato il file.

Ovviamente, in questo semplice esempio, verranno create tante colonne quanti sono i campi presenti nel file.

Quindi questo dipende anche dalle vostre esigenze.

Inoltre il progetto si basa su un Windows Form classico (l'ho preferito al WPF).

Bene, prima di tutto trasciniamo nella finestra un oggetto DataGridView.

In un altro articolo abbiamo visto come esportare una DataGridView in formato TXT.

Ora vediamo come esportarla in formato Excel, sicuramente più comodo da visualizzare rispetto al TXT.

Prima di tutto nel nostro progetto dobbiamo aggiungere una referenza.

Cliccate col tasto destro sul progetto -> Aggiungi riferimento -> .NET -> Microsoft.Interop.Excel

A qusto punto ho aggiunto un Item nel menu con questo evento:

private void saveXLSToolStripMenuItem_Click(object sender, EventArgs e)
{
    DialogSalvaXls dlg = new DialogSalvaXls();
    dlg.dialog(dataGridViewEntrate);
}

Non faccio altro che lanciare un SaveFileDialog e passargli la DataGridView da esportare.

Per il SaveFileDialog potete guardare qua.

Mnetre stampare una JTable in Java è piuttosto semplice, stampare una DataGridView in C# non è così immediato.

Prima di tutto nel Windows Form aggiungete un oggetto PrintDocument.

Ve lo ritroverete in basso; selezionatelo e nelle proprietà impostate il DocumentName e tra gli eventi impostate l'evento PrintPage.

L'evento sarà una cosa del genere:

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    Bitmap bm = new Bitmap(this.dataGridViewEntrate.Width, this.dataGridViewEntrate.Height);
    Rectangle rc = new Rectangle(0, 0, this.dataGridViewEntrate.Width, this.dataGridViewEntrate.Height);
    dataGridViewEntrate.DrawToBitmap(bm, rc);
    e.Graphics.DrawImage(bm, 0, 0);
}

In pratica definiamo l'area da stampare e trasformiano la DataGridView in una Bitmap.

Per fare le cose per bene aggiungiamo anche un oggetto PrintDialog e nelle proprietà impostiamo Document impostando printDocument1....(controllate anche le opzioni che sono interessanti).

Il controllo DataGridView è molto usato quando si vogliono mostrare i dati in forma tabellare.

E' molto comune riempirlo da database.

Se volessimo poi esportare il contenuto corrente senza eseguire altre query?

Io ho impostato il tutto per esportarlo sotto forma di string.