C#DataGridView编辑、添加行

  最近做项目需要对winfrom中的DataGirdView控件进行实时编辑个添加,保证跟数据库的数据实时同步起来。

  需求:对DataGirdView进行编辑、添加,保证数据跟数据库同步。

  分析:这样是要对某个事件进行操作,在完成时候是做添加还是修改操作,判断是添加还是修改可以通过ID来判断,如果数据库存在同样的ID,则编辑,不存在则进行添加,操作明确了,就是选择事件了,DataGridView事件很多,我选择的是CellEndEdit事件(当前选定单元格编辑模式停止时发生),具体的事件有很多,针对不同情况选择不同事件。 

                      //对行、列坐标进行判断
            int rowIndex = e.RowIndex;
            int colIndex = e.ColumnIndex;
            if (rowIndex < 0 || colIndex < 0) return;
            //取值操作
            string id = this.gvPerson.Rows[rowIndex].Cells[0].Value.ToString();
            string sql = @"select * from Person where ID=‘" + id + "‘";
            DataTable dt = DBHelper.ExecuteTable(sql, CommandType.Text, null);
            if (dt.Rows.Count > 0) {
                //执行修改操作
            }
            else {
                //执行添加操作
            }
            DoWork();                        

  做到这里,实际上完成了实时编辑、添加,但是,这样是远远不够的,数据是更新、添加到数据库,那么怎么样刷新DataGirdView呢?

        public delegate void MyInvoke();
        public void DoWork() {
            MyInvoke mi = new MyInvoke(LoadData);
            this.BeginInvoke(mi);
        }
        public void LoadData() {
            string sql = @"select * from Person";
            DataTable dt = DBHelper.ExecuteTable(sql, CommandType.Text, null);
            this.gvPerson.DataSource = dt;
        }    

  如果跟平时一样,重新加载一次,那样的刷新不了的,反而会报错,用委托的方式可以得到解决。

  在做DataGridView的操作时,会碰到DataError错误,只需要打开这个事件就可以了。

时间: 2024-11-13 05:59:23

C#DataGridView编辑、添加行的相关文章

DataGridView编辑后立即更新到数据库的两种方法

DataGridView控件是微软预先写好的一个显示数据的控件,功能非常强大,可以显示来自数据库表的数据和XML等其他来源的数据.最近在做一个迷你超市管理系统,要大量用到这个控件.所以花时间好好研究了下. 这是迷你超市管理系的库存数据DataGridView,用户一定会想如果能直接在DGV中修改数据就好了. 是的,这是一个很好的想法,这个功能微软早就帮我们想到了,现在可以使两种方法加以实现.下面就来介绍一下他们. 第一张方法:基于DataAdapter对象创建一个CommandBulider,用

C# winform datagridview rowheader 添加行标题的方法

#region 写行号事件 //在DataGridView控件上选择RowPostPaint事件 private void dgvJointList_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) { ((DataGridView)sender).fillRowHeaderIndex(e); } #endregion #region DataGridView的RowPostPaint事件中使用的添加行标题的公用方法

图解DataGridView编辑列

WinForm中DataGridView功能强大,除了可以自动绑定数据源外,还可以根据需求编辑列.下面以截图说明添加编辑列的步骤(HoverTreeSCJ 项目实际界面). 1.选择DataGridView控件,会在右上角出现黑色的小三角形,点击出现快捷菜单: 2.点击“编辑”,就可以在弹出窗口添,删除,或者编辑列.可以设置列的宽度,标题文本等等. 示例源码:http://hovertree.com/h/bjaf/a6dvcspv.htm 也可以百度.必应或者谷歌搜索:HoverTreeSCJ源

DataGridView编辑状态和CurrentCellDirtyStateChanged

问题说明: 在DataGridView中运用一些控件会出现很奇怪的现象,比如在DataGridViewComboColumn或者DataGridViewCheckBoxColumn等这类列中,当用户进行了改变,比如一个DataGridViewComboCell中改变了选项,DataGridViewCheckBoxCell进行过了勾选,并不会立刻生效,而是进入了编辑状态.一个复选框,当你点了勾选结果勾没有出来,只有当你换了一行之类的结束编辑状态的时候才会发生改变,这样用起来有时候就会很烦...这类

C#中DataGridView动态添加行及添加列的方法

http://www.jb51.net/article/72259.htm Datagridview添加列: ? 1 2 3 4 5 DataGridViewTextBoxColumn acCode = new DataGridViewTextBoxColumn(); acCode.Name = "acCode"; acCode.DataPropertyName = "acCode"; acCode.HeaderText = "A/C Code"

winfrom 为datagridview 添加行号

为datagridview添加行号 1. 注册datagridview的RowPostPaint事件 2. 在事件里手动画上行号 using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace CommonUtil { public class DataGridViewU

DataGridView控件用法合集

1 using System; 2 using System.Collections.Generic; 3 using System.Drawing; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 using System.Windows.Forms; 8 9 namespace Formes 10 { 11 12 //*DataGridView控件用法合集 */ 13 class Data

DataGridView的Cell[index] 对应列问题

在DataGridView中设置的列顺序不是代表的Cell[] 的Index  .Cell对应的index是数据源中的列index. 比如: select  唯一编号,履历编号,字段编号,状态,字段名称,SQL,顺序号 from 表 那么DataGridView 中Cell对应的列就是 Cell[0]:唯一编号 Cell[1]:履历编号 Cell[2]:字段编号 Cell[3]:状态 Cell[4]:字段名称 Cell[5]:SQL Cell[6]:顺序号 DataGridView 编辑列功能中

C# datagridview列绑定类中类的属性

datagridview编辑列时,对于类中类的属性绑定,尝试了一下”类名.属性名“ 并没有正确绑定,后又尝试了几次无果,只能利用Linq来解决了, 首先,datagridview要绑定的是学生类(Student),而学生类里有老师类(Teacher) 1 public class Student 2 { 3 public int Id; 4 public Teacher teacher; 5 } 6 7 public class Teacher 8 { 9 public string Name;