2013-04-21 81 views
0

我想将DataGridView转换为DataTable,但是我找到的所有溶剂都没有工作。任何想法?或者需要我使用foreach等?DataGrigView转换为DataTable

 DataTable d = detailsDataGridView.DataSource as DataTable;// return null table 

     DataTable dt = new DataTable(); 
     dt = (DataTable)detailsDataGridView.DataSource;//doesn't work 

     BindingSource bs = new BindingSource(); 
     bs.DataSource = detailsDataGridView.DataSource; 
     DataTable d = (DataTable)(bs.DataSource);//doesn't work 

回答

1

EDITED

试试这个方法,这是你需要什么:

DataTable data = GetDataTableFromDGV(dgvMyMembers); 

    private DataTable GetDataTableFromDGV(DataGridView dgv) 
    { 
     var dt = ((DataTable)dgv.DataSource).Copy(); 
     foreach (DataGridViewColumn column in dgv.Columns) 
     { 
      if (!column.Visible) 
      { 
       dt.Columns.Remove(column.Name); 
      } 
     } 
     return dt; 
    } 

OR

这里有一个简单的2列的DataGridView

一个简单的例子解决方案
DataTable dt = new DataTable(); 
dt.Column.Add("column1", typeof(string)); 
dt.Column.Add("column2", typeof(string)); 

foreach(DataGridViewRow dgvR in myDataGridView) 
{ 
    dt.Rows.Add(dgvR.Cells[0].Value, dgvR.Cells[1].Value); 
} 
+0

那么没有没有foreach的溶剂? – 2013-04-21 11:41:18

+0

只需尝试一下,当你找到一个代码工作时总是记住..然后它的工作原理和你的问题得到解决:) – Obama 2013-04-21 11:50:27

+0

会有一个问题,因为我有一个方法更多的DataGridView具有不同的名称和列的数量。 – 2013-04-21 12:00:05