关于DataGridView控件通过dataset直接更新数据库
时间:2011-02-27 来源:烟,没在风里
1 private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
2 {
3 int[] row = new int[dataGridView1.SelectedRows.Count]; //存储选定的行的索引号
4 int[] id = new int[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 Code1 private void 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 Code1 private void 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 }
这样做的前提是,数据表必须设定主键。
相关阅读 更多 +