求教清空DataGridView及数据库表相关数据的问题

bulls5988 2013-12-17 01:57:24
下面代码是清除按钮,之前已经在查找事件中把SQL查询结果放进DataGridView里了。
现在全部删除(清除)后会提示这一句: this.d_report.Rows.RemoveAt(0);错误“无法删除未提交的新行”
但是其实数据已经被删除了,虽然可以用try catch屏蔽这个错误。不过解决根本问题。求教大家这个错误为什么出现,怎么解决呢?


DialogResult clear_up = MessageBox.Show("您真的要清除所有记录吗?",
"提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
switch (clear_up)
{
case DialogResult.Yes:
SqlCommandBuilder delete = new SqlCommandBuilder(find_do);
for (int i = d_report.Rows.Count; i > 0; i--)
{
this.d_report.Rows.RemoveAt(0);
find_do.Update(ds, "rs");
}
MessageBox.Show("号码已经全部删除!", "提示",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
break;
case DialogResult.No:
break;
}
...全文
97 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
_小黑_ 2013-12-17
  • 打赏
  • 举报
回复
datatable dtClone = (dgv.datasource as datatable).Clone();
引用 3 楼 l397870376 的回复:
你是要把 dgv的数据 全部 清空 吗? 如果全部清空的话 可以这样 datatable dtClone = dgv.datasource as datatable;dgv.datasource = dtClone
_小黑_ 2013-12-17
  • 打赏
  • 举报
回复
你是要把 dgv的数据 全部 清空 吗? 如果全部清空的话 可以这样 datatable dtClone = dgv.datasource as datatable; dgv.datasource = dtClone
bulls5988 2013-12-17
  • 打赏
  • 举报
回复
引用 1 楼 junjun0509 的回复:
大概是因为,每一次删除后,第一行就变了,所以才会,下一次要删除的是新提交的行。 要不然你试试,在循环外面定义一个row,每次删除后,把第一行赋给这个row,然后删除的时候用Remove(row),不用RemoveAt。
好像应该是在count == 0 的时候出的问题
被吃了的狗 2013-12-17
  • 打赏
  • 举报
回复
大概是因为,每一次删除后,第一行就变了,所以才会,下一次要删除的是新提交的行。 要不然你试试,在循环外面定义一个row,每次删除后,把第一行赋给这个row,然后删除的时候用Remove(row),不用RemoveAt。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧