今天做了一个小功能,对一个数据库表中的信息直接进行增、删、改操作,用到了datagridview控件。 功能描述:窗体加载时,查询出表中的内容,并绑定到datagridview中显示。可以对表中的数据进行增/删、改操作。 开始用到了比较麻烦的方法,为datagridview添加
今天做了一个小功能,对一个数据库表中的信息直接进行增、删、改操作,用到了datagridview控件。
功能描述:窗体加载时,查询出表中的内容,并绑定到datagridview中显示。可以对表中的数据进行增/删、改操作。
开始用到了比较麻烦的方法,为datagridview添加了contextmenustrip,提供了三种方法。比较麻烦。下面是一部分代码:
1 privatevoid 删除toolstripmenuitem_click(object sender, eventargs e)
2 {
3 int[] row =newint[datagridview1.selectedrows.count]; //存储选定的行的索引号
4 int[] id =newint[datagridview1.selectedrows.count]; //存储选定行的id号 用于删除时查询的条件
5 int count = datagridview1.selectedrows.count; //存储开始选定了的行数
6 for (int j =0; j datagridview1.selectedrows.count; j++) //利用循环将选定的行索引存入row【】数组中
7 {
8 row[j] = datagridview1.selectedrows[j].index;
9 }
10 for (int i =0; i count; i++) //利用循环
11 {
12
13 datagridview1.currentcell = datagridview1[0, row[i]]; //设置当前活动的单元格的索引是【0,row【i】】,即所有选定行的第一列的值(att_id)
14 id[i] =convert.toint32(datagridview1.currentcell.value);
15
16 }
17 bool yesno=false;
18 if (messagebox.show(确定要删除吗,删除确认,messageboxbuttons.okcancel,messageboxicon.question) == dialogresult.ok)
19 {
20 for (int s =0; s count; s++)
21 {
22 string sql =delete from attributes where att_id=@att_id;
23 sqlparameter[] p =new sqlparameter[]{
24 new sqlparameter(@att_id,sqldbtype.int)};
25 p[0].value = id[s];
26 int val = (int)sqlhelper.delete(sql, p);
27 if (val >0)
28 {
29 yesno =true;
30 }
31 else
32 {
33 yesno =false;
34 break;
35 }
36
37 }
38 if (yesno ==true)
39 {
40 messagebox.show(删除成功!);
41 }
42 databind();
43 }
44 else
45 {
46
47 }
48 }
上面仅仅是删除这一项功能。所以非常麻烦!!
于是,想到了另一种比较简单而且很直观的方法,利用sqldataadapter的update方法,直接在datagridview中进行编辑(添加新数据、更改数据),只需给删除功能另加个按钮或者弹出菜单,datagridview1.rows.removeat(datagridview1.currentrow.index)删除选中行,有一点每种不足就是没删除一条就要点击一下按钮,而第一种方法可以一次性删除多条数据。
view code
1 privatevoid leixing_load(object sender, eventargs e)
2 {
3
4 sqlhelper.conn.open();
5
6 da =new sqldataadapter(select class_id as '编号',class_type as '商品类型' from class, sqlhelper.conn);
7 dt =new dataset();
8 da.fill(dt, info);
9 datagridview1.datasource = dt.tables[0];
10 //datagridview1.datamember = info;
11 datagridview1.columns[0].width =130;
12
13
14 sqlhelper.conn.close();
15
16 }
再添加一个按钮叫做“保存更新” 代码:
这样就实现了全部功能。比较简单。
view code
1 privatevoid baocun_click(object sender, eventargs e)
2 {
3
4
5 if (dt.haschanges())
6 {
7 sqlcommandbuilder scmb =new sqlcommandbuilder(da);
8 da.update(dt.tables[0]);
9 dt.acceptchanges();
10 }
11
12
13
14 }
这样做的前提是,数据表必须设定主键。