objDataSet.Tables["item"].Rows.Remove(r);
objDataSet.Tables["item"].AcceptChanges();

解决方案 »

  1.   

    我的代码错误在哪remove方法不是不需要acceptchange的吗
      

  2.   

    RemoveAt需要AcceptChanges吧
    你加上试试 吗
      

  3.   

    初始化一个DataRow:
    DataTable dataTable=dataSet.Tables[0];
    DataRow newRow=dataTable.NewRow(); //用dataTable生成DataRow可以利用dataTable里面的模式
    dataTable.Rows.Add(newRow);删除行:
    DataTable.Rows.Remove(行实例);
    DataTable.Rows.RemoveAt(行号);
    DataRow.Delete(); //行自身移除
      

  4.   

    removeAt和remove方法我都用了啊 都不行 问题可能不在这……
      

  5.   

    给你说个笨方法
    写SQL语句删除!!!!!!!!
      

  6.   

    这个主要是你没有真正理解SqlDataAdapter的update方法。
    update方法是根据RowState进行对数据库表的更新的,
    在做新增、删除(Delete,只是标示行状态)、更新,update方法
    都会去校验操作行的行状态是否改变,发生改变才会真正到数据库更新
    相关数据。
    但是remove、removeAt是直接删除表里面的数据(再DataTable中),
    行都不存在了,就没有所谓的行状态变化,所有不会真正到数据库更新
    相关数据。
    另外在执行update之前不能对数据集执行AcceptChanges,否则数据库
    也更新不了相关的数据。
    建议要删除直接用delete
      

  7.   

    在循环中进行删除操作,要倒过来进行操作,防止索引越界
    DataRow.Delete()后要记住AcceptChanges 
    or 
    DataRow[]   drs   =   DataTabl1.Select( ""); 
    for(   int   i=0   ;   i <drs.Count   ;   i++   ) 

        DataTable1.Rows.Remove(   drs[i]   ); 
    }
      

  8.   

    13楼正解。前几天我也被同样问题困扰了好久,最后发现调用Delete()方法再更新数据库就行。//………………
    dataTable.Rows[1].Delete();
    adapter.Update(dataTable);
      

  9.   

    感谢13楼和18楼用delete方法确实可以
    但是remove和removeAt和adapter的update方法不兼容我还是想不太通如果说不用update方法如何将remove和removeAt方法对datatable所做的更改提交给数据库?是不是还有其他更好的方式