0

我正在尝试将 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
4

2 回答 2

1

已编辑

试试这个方法,这就是你需要的:

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);
}
于 2013-04-21T11:32:25.893 回答
0

一条线上的快速解决方案。希望这会有所帮助

DataTable dt = (DataTable)dgvR.DataSource;
于 2018-07-19T16:42:02.827 回答