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
相关产品推荐
相关产品推荐

