2013-04-21 76 views
1

我做了两个datagridviews通过msdn现在我需要从“detailsDataGridView”获取数据,但我无法将其转换。 错误:无法将System.Windows.Forms.BindingSource转换为键入System.Data.DataTable。datagable从Datagridview(数据绑定)

有什么想法?代码,我试过了。

DataTable d = detailsDataGridView.DataSource as DataTable; 
///////////// 
     DataTable dt = new DataTable(); 
     dt = (DataTable)detailsDataGridView.DataSource; 
//////////// 
     BindingSource bs = new BindingSource(); 
     bs.DataSource = detailsDataGridView.DataSource; 
     DataTable d = (DataTable)(bs.DataSource); 
//////////// 
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; 
    } 
+0

datagridview的名称是什么? – Obama 2013-04-21 13:04:13

+0

像在msdn,detailsDataGridView和masterDataGridView一样。 – 2013-04-21 13:09:35

+0

但我只想从detailsDataGridView获取数据。 – 2013-04-21 13:12:48

回答

0

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

The DataGridView name is detailsDataGridView, so you'll do this :

DataTable data = GetDataTableFromDGV(detailsDataGridView);

然后数据是数据表!

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; 
    } 

你可以看到我的回答这个问题Here

祝您好运!

+0

嗨,我看到了你的答案,我试了一下。但它仍然会抛出错误:System.Windows.Forms.BindingSource对象不能转换为键入System.Data.DataTable。 – 2013-04-21 12:51:30

+0

添加你试过的东西..通过添加代码来编辑你的问题! – Obama 2013-04-21 12:53:28

+0

已修改。我认为问题是数据绑定。 – 2013-04-21 13:03:27