17

我想从 Grid 值的 DataGridView 中获取一个 DataTable。

换句话说,DataTable 与 DataGridView 值相同

4

4 回答 4

46

可能是一种更好的方法,但否则仅循环通过 DGV 并手动创建 DataTable 将是相当简单的。

像这样的东西可能会起作用:

DataTable dt = new DataTable();
foreach(DataGridViewColumn col in dgv.Columns)
{
   dt.Columns.Add(col.Name);    
}

foreach(DataGridViewRow row in dgv.Rows)
{
    DataRow dRow = dt.NewRow();
    foreach(DataGridViewCell cell in row.Cells)
    {
        dRow[cell.ColumnIndex] = cell.Value;
    }
    dt.Rows.Add(dRow);
}
于 2010-06-24T10:34:43.377 回答
12

您可以将 DataSource 对象从 DataGridView 转换为 DataTable

DataTable dt = new DataTable();
dt = (DataTable)dataGridView1.DataSource;
于 2012-05-15T15:55:22.553 回答
5

您也可以使用以下代码,当您在数据表中添加或删除行时,此代码填充不会影响您的 DataGridView

DataTable dt = new DataTable();
dt = Ctype(dataGridView1.DataSource,DataTable).copy();
于 2012-11-10T09:18:00.770 回答
0

您可以尝试如下:

using System.Data;
using System.Windows.Forms;

namespace BLL
{
    public class Class_DataGridview_To_DataTable
    {
        public static DataTable UDF_Convert_DataGridView_To_Datatable(DataGridView ImpGrd)
        {
            DataTable ExportDataTable = new DataTable();
            foreach (DataGridViewColumn col in ImpGrd.Columns)
            {
                ExportDataTable.Columns.Add(col.Name);
            }

            foreach (DataGridViewRow row in ImpGrd.Rows)
            {
                DataRow dRow = ExportDataTable.NewRow();
                foreach (DataGridViewCell cell in row.Cells)
                {
                    dRow[cell.ColumnIndex] = cell.Value;
                }
                ExportDataTable.Rows.Add(dRow);
            }

            return ExportDataTable;
        }
    }
}
于 2021-09-24T12:29:42.060 回答