ds.Rows.RemoveAt(this.BindingContext[ds].Position);
DataTable bb = new DataTable();
this.BindingContext[ds].EndCurrentEdit();
bb = ds.GetChanges(); 
if (bb!=null)
{
  if (MessageBox.Show(this,"您修改过数据确定?","注",MessageBoxButtons.YesNo,MessageBoxIcon.Error) == DialogResult.Yes)
 {
OleDbCommandBuilder cc =new OleDbCommandBuilder(da);
da.Update(ds);
ds.AcceptChanges();
 }
 else
{
     ds.RejectChanges();
}

解决方案 »

  1.   

    bb = ds.Tables[0]
    GetChanges();是什么?
      

  2.   

    是一个方法,返回DataTable类型的吧,那也不应该这么定义啊,bb = ds.GetChanges(); 你直接令:bb=GetChanges()另外,先看看你GetChanges这个方法,把代码贴出来
      

  3.   

    DataTable ds = new DataTable();
    绑定grid然后
    删除行数据ds.Rows.RemoveAt(this.BindingContext[ds].Position);
    保存
    DataTable bb = new DataTable();
    this.BindingContext[ds].EndCurrentEdit();
    bb = ds.GetChanges(); 
      

  4.   

    刚才是我弄错了,没用过GetChanges方法,刚才试了一下ds.GetChanges()是DataSet类型的,而你的bb是一个DataTable所以只能这样定义:    DataTable aa=ds.GetChanges().Tables[0];
      

  5.   

    GetChanges()好像根据DataRow.RowStatus找出修改过的记录,
    如果你用的是Remove()方法而不是Delete()方法(状态变为RowStatus.Deleted)的话,
    可能认为没有改动过.
      

  6.   

    对,如果没有改动的话有可能返回null
      

  7.   

    在ds.Rows.RemoveAt(this.BindingContext[ds].Position);
    前面加上:
    ds.AcceptChanges();
    看是否可以..如果不行,试着改成这样..ds.Rows[this.BindingContext[ds].Position].Delete();再试试...