2013-04-21 163 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