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

CSV加载DataGridView后如何通过文本框向其中填充新增数据

问题核心原因

当DataGridView已绑定数据源时,不能直接通过Rows.Add方法新增行,也不能将DataSource赋值为控件本身,必须操作绑定的底层数据源(也就是你Readcsv方法返回的DataTable对象)。

修复步骤

  1. 首先在窗体类的全局范围定义一个DataTable变量,用来存储CSV加载的数据,保证多个按钮事件都能访问到该数据源:
// 写在窗体类内部、所有方法的外面
private DataTable _csvDataSource;
  1. 修改CSV加载按钮的逻辑,把读取到的DataTable赋值给全局变量后再绑定到DataGridView:
private void btnOtvor_Click(object sender, EventArgs e)
{
    try
    {
        using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "CSV|*.csv", ValidateNames = true, Multiselect = false })
        {
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                // 把读取结果赋值给全局数据源
                _csvDataSource = Readcsv(ofd.FileName);
                dataGridViewZamestnanci.DataSource = _csvDataSource;                                     
                labelErrMsg.Text = "Subor otvoreny spravne";
                labelErrMsg.ForeColor = System.Drawing.Color.Green;
                timer1.Start();
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}
  1. 修改新增按钮的逻辑,直接操作全局数据源新增行即可,DataGridView会自动同步数据:
private void btnPridat_Click(object sender, EventArgs e)
{
    // 先校验是否已经加载了CSV数据
    if(_csvDataSource == null)
    {
        MessageBox.Show("请先加载CSV文件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        return;
    }
    // 给底层DataTable新增一行数据
    DataRow newRow = _csvDataSource.NewRow();
    // 按你CSV的列顺序赋值即可
    newRow[0] = textBoxMeno.Text;
    newRow[1] = textBoxTel.Text;
    newRow[2] = textBoxProfesia.Text;
    newRow[3] = textBoxTpp.Text;
    _csvDataSource.Rows.Add(newRow);
}

原代码错误说明

  • 原代码中dataGridViewZamestnanci.DataSource = dataGridViewZamestnanci;属于逻辑错误,DataSource需要接收数据集合类对象(比如DataTable、List等),不能把控件本身赋值给它
  • DataGridView绑定数据源后,控件层面的行集合是只读的,直接调用Rows.Add会抛出异常,必须操作底层绑定的数据源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 21:51:02