日期:2014-05-17  浏览次数:20806 次

如何使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,也可以的