现在的位置: 首页 > 综合 > 正文

使用DataGridView内建行新增和编辑数据

2013年09月17日 ⁄ 综合 ⁄ 共 1827字 ⁄ 字号 评论关闭

     我们经常要用到DataGridView控件来显示数据表,传统的新增和编辑一条数据的方式是新增数据后刷新DataGridView来显示,或选中一条数据来进行编辑,保存。这对于维护一张数据表来说很常见也很好用,但如果在一个界面里面同时有很多待编辑的数据,里面可能有TextBox、DropDownList、DataGridView等各种控件,我们要对这些数据进行编辑、保存,这种情况下我们希望编辑完所有的数据后一起保存,这就要求DataGridView控件可以内建的方式来新增和编辑数据,如同常用的Excel,对所有的行和列做完新增、编辑或删除等所有操作后再保存数据。

    在C#.NET中用DataGridView我们也可以实现。

 

1、首先设置DataGridView的属性:

      dgv.AllowUserToAddRows = True;

      dgv.AllowUserToDeleteRows = True; 等;

编辑好要显示的列。此时DataGridView会自动内建新行,我们可以新增若干行数据;

*保存数据:

  

我是使用的linq来实现和数据库交互,做保存操作前先执行EndEdit(),否则刚填写而未失去焦点的数据找不到。

 

2、已存在数据要进行绑定的情况

  直接对DataGridView进行数据绑定的话AllowUserToAddRows会失去作用,不会自动内建新行。可以用BindingSource来实现数据绑定:

 

  设置bs.AllowNew = true; 这样绑定完数据后新行会自动出现,可以对原来的数据进行编辑,也可以新增数据。

  编辑完成后,保存数据时要先删掉原来的数据,再把表中的数据逐行插入:

 

3、数据列中有DataGridViewComboBoxColumn时的情况

  首先初始化时绑定ComboBox数据;

  空数据新增时不会有什么问题;

  需要绑定数据时,在新行会出现“DataGridViewComboBoxColumn 值为空”的异常,此时对DataGridView添加DataError,不用做任何处理,可以解决。

4、数据列中需要日期选择控件时

  DataGridView的列属性中默认没有日期选择控件,可以继承DataGridViewColumn和C#类库里的DateTimePicker组件来实现自己的日期选择控件。

日期选择组件参考:http://blog.csdn.net/lgh112437/archive/2010/01/27/5262122.aspx

PS: 效果图

内建行效果截图

抱歉!评论已关闭.