我如何将GridView.DataSource导出到数据表或数据集?

如何将GridView.DataSource导出到数据表或数据集?

你应该在BindingSource转换第一个DataSource ,看看例子

 BindingSource bs = (BindingSource)dgrid.DataSource; // Se convierte el DataSource DataTable tCxC = (DataTable) bs.DataSource; 

tCxC的数据你可以做任何事情。

假设你的DataSource是DataTabletypes的,你可以这样做:

 myGridView.DataSource as DataTable 

我个人会去:

 DataTable tbl = Gridview1.DataSource as DataTable; 

这将允许您testing为null,因为这会导致DataTable对象或null。 使用(DataTable)GridView1.DataSource将其作为数据表进行转换将导致DataSource实际上是DataSet甚至某种集合的情况下发生崩溃错误。

支持文档: MSDN关于“as”的文档

安布,

我和你有同样的问题,这是我用来弄清楚的代码。 虽然,我不使用页脚行部分为我的目的,我没有包含在此代码中。

  DataTable dt = new DataTable(); // add the columns to the datatable if (GridView1.HeaderRow != null) { for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++) { dt.Columns.Add(GridView1.HeaderRow.Cells[i].Text); } } // add each of the data rows to the table foreach (GridViewRow row in GridView1.Rows) { DataRow dr; dr = dt.NewRow(); for (int i = 0; i < row.Cells.Count; i++) { dr[i] = row.Cells[i].Text.Replace("&nbsp;",""); } dt.Rows.Add(dr); } // add the footer row to the table if (GridView1.FooterRow != null) { DataRow dr; dr = dt.NewRow(); for (int i = 0; i < GridView1.FooterRow.Cells.Count; i++) { dr[i] = GridView1.FooterRow.Cells[i].Text.Replace("&nbsp;",""); } dt.Rows.Add(dr); } 

我已经使用下面的代码行,它的工作原理,试试这个

 DataTable dt = dataSource.Tables[0]; 

这来得晚,但是相当有帮助。 我只是张贴以供将来参考

 DataTable dt = new DataTable(); Data.DataView dv = default(Data.DataView); dv = (Data.DataView)ds.Select(DataSourceSelectArguments.Empty); dt = dv.ToTable();