回 帖 发 新 帖 刷新版面

主题:DataGrid删除问题,删除一行后,后面的数据也删除了

当使用
public void materials_DeleteCommand(object O, DataGridCommandEventArgs E)
{
string selID=materials.DataKeys[E.Item.ItemIndex].ToString();
string sql="delete from 材料信息全 where 材料名称='"+selID+"'";
conn.openr();
SqlCommand cmd = new SqlCommand(sql,conn);
cmd.ExecuteNonQuery();
conn.Close();
this.binddatagrid();
}
进行删除时,发现此程序点击一次,但是却运行两次或多次,而且如果删除中间行,那么下面的行也随着删除了,也就是说,执行删除一行的命令,却删除多行,为什么呢?[em10]

回复列表 (共2个回复)

沙发

发现问题了,如果是删除最后一行,就出现错误
执行后出现错误在
string selID=materials.DataKeys[E.Item.ItemIndex].ToString();
System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index

如果删除中间行,就删除两行,很奇怪!,怎么改呢?我加一个全局变量,i,如果i=1就运行此过程,如果i〉1就不运行,倒是达到目的了,但是感觉不是解决的办法,为什么只点击一次却运行两次呢?

板凳

你看你的数据库的关键列的值是不是有重复的,你可以运行我的例子,原理是相通的!

我来回复

您尚未登录,请登录后再回复。点此登录或注册