2010-06-24 5 views

risposta

23

Potrebbe essere un modo migliore per farlo ma altrimenti sarebbe abbastanza banale da solo scorrere il DGV e creare il DataTable manualmente.

Qualcosa di simile potrebbe funzionare:

DataTable dt = new DataTable(); 
foreach(DataGridViewColumn col in dgv.Columns) 
{ 
    dt.Columns.Add(col.Name);  
} 

foreach(DataGridViewRow row in dgv.Rows) 
{ 
    DataRow dRow = dt.NewRow(); 
    foreach(DataGridViewCell cell in row.Cells) 
    { 
     dRow[cell.ColumnIndex] = cell.Value; 
    } 
    dt.Rows.Add(dRow); 
} 
7

si può lanciare l'oggetto DataSource dal DataGridView a un DataTable

DataTable dt = new DataTable(); 
dt = (DataTable)dataGridView1.DataSource; 
+3

Va notato che questo non funzionerà se DataSource è un BindingList , anche se ero molto fiducioso. –

4

è possibile utilizzare il seguente codice anche, questo codice non effetto di riempimento su il tuo DataGridView quando fai qualche aggiunta o eliminazione di righe nel datatable

DataTable dt = new DataTable(); 
dt = Ctype(dataGridView1.DataSource,DataTable).copy();