You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何从无绑定源生成的DataGridView中获取数据源?

把DataGridView手动添加的数据转为数据源的方法

嘿,这个需求其实挺常见的——当你一开始用Rows.Add()手动塞数据,后来想切换到数据源绑定模式时,只需要把现有行数据转成一个可绑定的数据源对象(比如DataTable)就行,具体步骤如下:

1. 创建匹配DataGridView列的DataTable

首先得建一个和你的DataGridView列结构一致的DataTable,这样数据才能正确映射:

// 初始化空DataTable
DataTable gridDataTable = new DataTable();

// 遍历DataGridView的列,给DataTable添加对应列
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
    // 列名沿用DataGridView的列名,类型默认用object适配所有数据类型,你也可以根据实际调整
    gridDataTable.Columns.Add(column.Name, typeof(object));
}

2. 将DataGridView的行数据导入DataTable

接下来把已有的行数据逐条搬到DataTable里,注意要跳过自动生成的新行(就是最后一行可编辑的空行):

// 遍历DataGridView的每一行
foreach (DataGridViewRow row in dataGridView1.Rows)
{
    // 跳过新行,避免导入空数据
    if (!row.IsNewRow)
    {
        DataRow newDataRow = gridDataTable.NewRow();
        // 逐个单元格赋值
        for (int colIndex = 0; colIndex < dataGridView1.Columns.Count; colIndex++)
        {
            // 处理空值,避免DBNull异常
            newDataRow[colIndex] = row.Cells[colIndex].Value ?? DBNull.Value;
        }
        gridDataTable.Rows.Add(newDataRow);
    }
}

3. 绑定DataTable作为数据源

最后把DataTable设为DataGridView的数据源即可,记得先清空原有绑定:

// 先清空旧数据源,避免冲突
dataGridView1.DataSource = null;
// 绑定新的DataTable数据源
dataGridView1.DataSource = gridDataTable;

额外注意事项

  • 如果你的DataGridView列是自定义设置的(比如指定了特定数据类型),记得把DataTable对应列的类型改成匹配的,比如typeof(string)、typeof(int)等,避免类型转换问题。
  • 要是之后想通过修改DataTable来同步更新DataGridView的显示,直接操作DataTable就行,绑定模式下会自动刷新界面。

内容的提问来源于stack exchange,提问作者Saran Mohan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 03:02:29