datagridview绑定datatable我想删除datagridview里面的指定行,方法1:用RemoveAt删除datatable中的指定行后,控件中是删除了,...
datagridview 绑定datatable
我想删除datagridview里面的指定行,
方法1:用RemoveAt删除datatable中的指定行后,控件中是删除了,但是整个datatable保存提交后再刷新,刚才删除的行又出来了。
方法2:用delete删除指定行后,调用Accept,然后整个datatable保存会报错
望高手解答,如果有例子或是例程最好,注意:不是用语句从数据库中删除,而是通过DataAdapter.Update进行datatable的整体提交,多谢!
自己查到原因了:
供大家参考
sqldataadapter Update 删除datatable中的行并更新数据库
在使用sqldataadapter Update方法更新客户端datatable的时候,如果是删除行,要使用datatable.Rows[行下标].Delete();
而不是使用datatable.Rows.RemoveAt(行下标);
如果使用的是RemoveAt方法,在调用sqldataadapter.Update(datatable);时不会从数据库中删除记录。
原因:RemoveAt是直接在DATATABLE中将ROW删除,如果用DELETE的话则只是标记ROW为删除,在调用UPDATE的时候才会真正的从DATATABLE中删除,也就是你的SQL删除语句还需要你的DATATABLE提供数据,而你用RemoveAt已经将DATATABLE中的数据彻底删除了,就没有办法为SQL删除语句提供了所以就出现这个状况,建议使用DELETE的方法
今天下班了。明天来了,你没结贴就帮你写。
来了
DataGridViewSelectedRowCollection dr = new DataGridViewSelectedRowCollection();
private void dataGridView1_Click(object sender, EventArgs e)
{
try
{
//单击控件的时候,把当前选中的数据行赋值给dr
dr = dataGridView1.SelectedRows;
}
catch
{ return; }
}
private void button1_Click(object sender, EventArgs e)
{
//比如这个是你的删除按钮
if (dr.Count > 0)//判断是否有选中数据
{
string delstr = dr[0].Cells[0].Value.ToString();//提取选中行第一个单元格内的值
delstr = "delete from table where 许可单位或个人 ='" + delstr + "'";
//语句有了调到你用来删除数据库中数据的方法中,然后重新给datagridview绑定数据。
}
}
这是个例子,还要根据你的具体情况做一些修改,如果还不明白。。。我也帮不到你了。