private void button3_Click(object sender, System.EventArgs e)
{

    if(this.dataGrid1.IsSelected(this.dataGrid1.CurrentRowIndex))
    {
         );//从DataGrid中移除一行
this.dsMe.tblUser.Rows.RemoveAt(this.dataGrid1.CurrentRowIndex         //从数据中删除行
this.dsMe.tblUser.Rows[this.dataGrid1.CurrentRowIndex].Delete();         //更新到数据库----这句出错.
this.sqlDataAdapter1.Update(this.dsMe.tblUser);//
    }
未处理的“System.Data.SqlClient.SqlException”类型的异常出现在 system.data.dll 中。其他信息: 系统错误。

解决方案 »

  1.   

    你在删除前对数据进行过其他操作没有对数据集dsMe或数据表tblUser进行过操作,或者建立过其他的数据集或数据表,如果有,在按钮事件的第一行前重新创建数据集或数据表即可解决,作用就是重新对数据集加载数据。
    也可以用其他方法对数据集加载数据。
    出错的原因是:你的数据集的内容可能改变了。
      

  2.   

    你的做法错误,把
    this.dsMe.tblUser.Rows.RemoveAt(this.dataGrid1.CurrentRowIndex);
    删除即可
      

  3.   

    正如Knight94(愚翁)所写,
    this.dsMe.tblUser.Rows.RemoveAt(this.dataGrid1.CurrentRowIndex);多写了一行
      

  4.   

    this.dsMe.tblUser.Rows[this.dataGrid1.CurrentRowIndex].Delete();
    这句话的下面加一句这样的OleDbCommandBuilder custCB = new OleDbCommandBuilder(sqlDataAdapter1);
    这样就可成功了
      

  5.   

    你要理解delete和removeat的执行方式
    remaoveat只是把数据移出当前的数据集中,而不是把这条数据真正的在数据库中删除
    而delete是在当前的数据集合把要删除的数据作个标志,等当你提交数据时才真正把数据库中的数据完全删除
    所以说你在用
    this.dsMe.tblUser.Rows.RemoveAt(this.dataGrid1.CurrentRowIndex);
    是多余的!