如何使DataGridView删除数据并在数据库对相应数据进行删除?
我的DataGridView绑定了DataSet的一个DataTable表,我启用了DataGridView的删除功能,但是只是DataGridView控件上显示删除,数据库并没有进行删除。该如何让删除同步到数据库?
另外请讲解下DataGridView的用法,详细点.
------解决方案--------------------DataTable只是内存中的数据,所以你删除的仅仅是内存数据。如果要将更改提交到数据库,可以编写SQL语句执行,也可以使用DataAdapter.Update方法。
------解决方案--------------------绑定数据的时候,用SqlCommandBiulder
这样就会生成删除,修改,增加命令对象
最后调用ds.update()就可以更新到数据库了。
------解决方案--------------------
一、定义几个窗体级的变量 private SqlConnection conn = null;
private SqlDataAdapter adpter = null;
private DataSet ds = null;
二、显示数据用的代码:(假设在窗体加载时) 假设你窗体上有一个多为bookDataGridView的DataGridView控件
private void frmMain_Load(object sender, EventArgs e)
{
conn = new SqlConnection(@"Server=(local)\sqlexpress;Integrated Security=True;Database=scc");
adpter = new SqlDataAdapter("select * from 表名称", conn);
SqlCommandBuilder scb = new SqlCommandBuilder(adpter);
ds = new DataSet();
adpter.Fill(ds);
if (ds !=null)
{
bookDataGridView.DataSource = ds.Tables[0];
}
}
注意在你要删除的表里设置一个主键,也就是唯一索引 三、删除数据的代码: private void btnDelete_Click(object sender, EventArgs e)
{
DataTable dt = ds.Tables[0];
if (bookDataGridView.Rows.Count <= 0 ||
bookDataGridView.SelectedRows.Count <= 0) return;
//定义一个数组保存所选中的行
int[] sel_rows = new int[bookDataGridView.SelectedRows.Count];
for (int i = 0; i < bookDataGridView.SelectedRows.Count; i++)
{
sel_rows[i] = bookDataGridView.SelectedRows[i].Index;
}
//根据数组选择所得到的行号删除数据表
for (int i = 0; i < sel_rows.Length; i++)
{
dt.Rows[sel_rows[i]].Delete();
}
adpter.Update(ds);[color=#FF6600][/color]//用这句来更新数据数据,真正地删除掉(如果不删除数据里的资料就不用这条语句)
}
四、DataGridView的用法太多了,你可能要在网上找些资料看看才可以的,一下子很难说得清楚的
------解决方案--------------------DataGridView只看名称你也应该知道这只是一个类似视图的虚拟表,要想对实际表进行操作就必须执行sql语句
------解决方案--------------------DGV是就是内存中的一个临时表,对其删除操作影响不到数据库。
LZ已经给出解决方法了,不过你可以用这个思路就是:
找到要删除的数据,先将其在数据库中删除,再绑定DGV,也可以的