int index=this.dataGrid1.CurrentCell.RowNumber;this.datasetTxl.Tables["txl"].Rows[index].Delete();DataSet changes = this.datasetTxl.GetChanges();try
{

this.adapTxl.Update(changes);
         this.datasetTxl.AcceptChanges();
        
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}

解决方案 »

  1.   

    this.adapTxl.Update(changes)就可以了;DataAdapter默认是会自动AcceptChanges的
      

  2.   

    index=this.dataGrid1.CurrentCell.RowNumber所指的位置不一定和数据集中Table的行一一对应.如:dataGrid1的RowNumber=2,对应于Table中行就不一定是2,解决办法之一如下:
    CurrencyManager cm;
    cm = (CurrencyManager) dataGrid1.Parent.BindingContext[dataGrid1.DataSource, dataGrid1.DataMember]; 
    if (cm.Count > 0) 
    {
       cm.RemoveAt(cm.Position);
    }
      

  3.   

    大家误会我的意思了!
    我的程序不报错,就是执行update后不向数据库修改!
    想删除的项没有删!
    各位大侠救救我吧!快不行了!
      

  4.   

    this.datasetTxl.AcceptChanges();
    this.adapTxl.Update(this.datasetTxl,"txl");
    问题就在你先AcceptChange,那么DataTable中所有的DataRow的RowState都
    变成unchanged,所以,update方法就什么也不执行了,建议你看看帮助中
    Adpater的更新过程(针对不同的RowState执行不同的操作)
    你去掉AcceptChanges就可以执行更新了,而且更新后自动调用AcceptChange。
      

  5.   

    如skykevin(蓝屿)说那样调整对应关系,修改代码如我说应该不会错的
      

  6.   

    谢谢大家!netpot(netpot)说的很对