Quizá hay una forma mejor de hacerla, a mi se me ocurre esto:
dt1 es el datatable
Código c#:
Ver original//Recorrer columnas
foreach(DataGridViewColumn columna in this.DataGridView1.Columns){
DataColumn col = new DataColumn(columna.Name);
dt1.Columns.Add(col);
}
//Recorrer filas
foreach(DataGridViewRow fila in this.DataGridView1.Rows){
DataRow dr = dt1.NewRow();
dr[0] = fila.Cells[0].Value.ToString();
dr[1] = fila.Cells[1].Value.ToString();
dt1.Rows.Add(dr);
}
Espero te sirva