Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataGrigView转换为DataTable_C#_Datagridview_Datatable - Fatal编程技术网

C# DataGrigView转换为DataTable

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

我试图将DataGridView转换为DataTable,但我发现的所有解决方案都不起作用。有什么想法吗?或者我需要使用foreach等

        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。