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

C#向DataGridView添加行时原有行内容丢失问题求助

解决DataGridView添加行时清除之前内容的问题

哦,我太懂这个坑了!之前用RowCount来加行的时候也遇到过一模一样的情况——每次点按钮新行加上了,但之前的内容全没了。

问题出在哪?

你直接修改RowCount属性的方式,在DataGridView未绑定数据源的场景下,会触发控件重新生成行集合,相当于把之前的行都重置了,自然就清空了旧内容。正确的做法应该是用控件自带的Rows.Add()方法来追加新行,这个方法会保留现有行的所有数据,只在末尾加新行。

修正后的代码

第一种写法,先添加行再赋值:

private void button1_Click(object sender, EventArgs e) 
{
    // 添加新行,获取新行的索引
    int newRowIdx = dataGridView2.Rows.Add();
    // 给新行的单元格赋值
    dataGridView2.Rows[newRowIdx].Cells[0].Value = "smth";
    dataGridView2.Rows[newRowIdx].Cells[1].Value = "something";
}

如果想更简洁,还可以直接在Add()里传入单元格的值,一步到位:

private void button1_Click(object sender, EventArgs e) 
{
    // 直接传入两个单元格的值,自动创建新行并填充
    dataGridView2.Rows.Add("smth", "something");
}

额外提醒:如果绑定了数据源

要是你的DataGridView是绑定了DataTable这类数据源的,那千万别直接操作DataGridView的Rows集合,应该往数据源里加行,控件会自动同步:

// 假设你的数据源是预先绑定好的DataTable dt
DataRow newRow = dt.NewRow();
newRow[0] = "smth";
newRow[1] = "something";
dt.Rows.Add(newRow);
// 要是控件没自动刷新,就手动调用一下
dataGridView2.Refresh();

这样改完之后,每次点按钮添加新行,之前的内容就不会被清空啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:01:22