加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C# 当控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行。

(2013-12-29 00:49:15)
标签:

c中关于datagridview

it

分类: c#

C#中关于dataGridView控件绑定数据后新增行的问题

在C#2010的编程中,如果你用到DataGridView的时候,如果不绑定数据,那在加载数据到此控件的时候会很慢,一闪一闪的,但如果你做了绑定,但DataGridView又不能执行如DataGridView1.Rows.Add();语句,一执行DataGridView1.Rows.Add();语句会报错如下:

当控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行。

 

今天我也遇到这个问题,于上网上参考了很多同志的讨论和答复,基本上都要么说一半,要么没说的不清,贴出来的代码我执行过都有问题,自己研究了一下实际上这个时候用直接操作Tables就可以,代码如下:

            private DataSet dss = new DataSet();

            dss = oper.GetDataSetZC(); //这里的oper.GetDataSetZC()是自义函数,抓数据用的

            this.dataGridView1.DataSource = dss.Tables[0].DefaultView; //第一次加载数据到控件,也就是这样加载之后,后面不解除绑定你就没法新增行

 

            //*********************************下面的代码就解决这个问题************************

            dataGridView1.DataSource = null//这里先将DataSource置空,实际上相当于解除绑定。实际上此时可以用DataGridView1.Rows.Add(); 但是此时用这个语句后又没表头,所以不是想要的,故不用DataGridView1.Rows.Add(); 
            dss.Tables[0].Rows.Add("A","AA"); //注意这里的dss为DataSet,而且不是空的,Tables[0]里的行是有格式的,所以dss.Tables[0].Rows.Add("A","AA");里的"A","AA"要对应相应的字段,字段类型一定要匹配,不然会报错
            dataGridView1.DataSource = dss.Tables[0].DefaultView; //重新加载数据到dataGridView1控件中,执行完这句你就会发现你添加成功了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有