C# DataGrigView转换为DataTable
我试图将DataGridView转换为DataTable,但我发现的所有解决方案都不起作用。有什么想法吗?或者我需要使用foreach等C# DataGrigView转换为DataTable,c#,datagridview,datatable,C#,Datagridview,Datatable,我试图将DataGridView转换为DataTable,但我发现的所有解决方案都不起作用。有什么想法吗?或者我需要使用foreach等 DataTable d = detailsDataGridView.DataSource as DataTable;// return null table DataTable dt = new DataTable(); dt = (DataTable)detailsDataGridView.DataSourc
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
已编辑 尝试此方法,这是您需要的:
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;
}
或
下面是一个简单的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);
}
快速解决方案在一行。希望这会有所帮助
DataTable dt = (DataTable)dgvR.DataSource;
所以没有foreach就没有解决方案了?试试看,当你发现一个代码在工作时,要时刻牢记。。然后它工作了,您的问题就解决了:)会有一个问题,因为我有一个方法来处理更多具有不同名称和列数的DataGridView。