购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP


陷阱23
拒之门外
——在DataGridView中插入行时的陷阱

1.陷阱产生的场景

DataGridView控件在数据库应用程序开发中常被用来显示数据记录,若将它与BindingSource组件配合使用,还可以用来编辑数据,包括添加、修改及删除数据记录。若要向DataGridView控件中添加数据记录,则需要向其中添加行。但如果对这个添加数据行的操作处理不当,则会给程序带来异常。

例4.23 在DataGridView中插入行时的陷阱(光盘位置:光盘\MR\Instance\4\23\ Add DataGridViewRow),该实例的实现过程如下。

在本实例的窗体中添加一个DataGridView控件和两个Button控件,分别用来显示数据、添加数据行及退出窗体,如图4.46所示。

在该窗体的Load事件中,绑定DataGridView控件到数据源,其代码如下:

在上面的代码中,首先通过GetDataTable方法获取DataTable类型的数据源,然后将该数据源绑定到DataGridView控件上。

在“添加行”按钮的Click事件中,通过以下代码来实现向DataGridView控件中添加行,具体代码如下:

上面代码中的Add方法实现向DataGridView控件的行集合中添加一个新行,它还可以被替换成另外两种重载形式,其实现功能相同,使用另外两种重载形式的代码如下:

上面的3种方法,在编译后运行程序,均得到以下异常提示,如图4.47所示。

图4.46 添加数据行窗体

图4.47 异常提示

2.陷阱的分析

异常信息提示“当控件被绑定时,无法以编程方式向DataGridView的行集合中添加行”。通过查询Load事件中的源代码看到,本实例的DataGridView控件确实已绑定到数据源。也就是说,绑定了数据源的DataGridView控件,不允许使用Add方法直接向其中添加行。

3.陷阱的解决方法

针对上面的分析,可以从DataGridView控件的数据源入手,本实例的数据源是DataTable实例。在DataTable实例中可以实现添加新行,然后再将该DataTable实例重新绑定到数据源,这样在DataGridView控件中就可以显示出添加的新行,从而间接地实现了向DataGridView控件中添加行。本实例实现向绑定了数据源的DataGridView控件中添加行的代码如下:

在“添加行”按钮的Click事件中,更改其代码如下: e1j4DcpvrowEweogwjYWPBnGbrWVPitUcRBP7jz2LFN27t/tSuHVxMeoa/cPkw2h

点击中间区域
呼出菜单
上一章
目录
下一章
×