当前位置:编程学习 > C#/ASP.NET >>

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

下面代码是清除按钮,之前已经在查找事件中把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;
            }
--------------------编程问答-------------------- 大概是因为,每一次删除后,第一行就变了,所以才会,下一次要删除的是新提交的行。
要不然你试试,在循环外面定义一个row,每次删除后,把第一行赋给这个row,然后删除的时候用Remove(row),不用RemoveAt。 --------------------编程问答--------------------
引用 1 楼 junjun0509 的回复:
大概是因为,每一次删除后,第一行就变了,所以才会,下一次要删除的是新提交的行。
要不然你试试,在循环外面定义一个row,每次删除后,把第一行赋给这个row,然后删除的时候用Remove(row),不用RemoveAt。


好像应该是在count == 0 的时候出的问题 

--------------------编程问答-------------------- 你是要把 dgv的数据 全部 清空 吗?
如果全部清空的话 可以这样
datatable dtClone = dgv.datasource as datatable;
dgv.datasource = dtClone --------------------编程问答-------------------- datatable dtClone = (dgv.datasource as datatable).Clone();

引用 3 楼 l397870376 的回复:
你是要把 dgv的数据 全部 清空 吗?
如果全部清空的话 可以这样
datatable dtClone = dgv.datasource as datatable;dgv.datasource = dtClone
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,