c# winform程序中有一个datagrid,数据源是dataset,连接到数据库,用下面的代码更新/******************************
DataSet change = dataSet11.GetChanges();
if(change != null)
{
        int numRows = sqlDataAdapter1.Update(change);
MessageBox.Show("数据更新完成 " + numRows + " 行!",
"更新",MessageBoxButtons.OK,MessageBoxIcon.Information);
dataSet11.AcceptChanges();
}
else 
{
MessageBox.Show("没有需要更新的数据","没有更新",
MessageBoxButtons.OK,MessageBoxIcon.Information);
}
/*******************************但是更新的时候出现这样的问题,比如我给datagrid中填一行数据,然后点更新按牛,用上面的代码更新,提示没有需要更新的数据,但是如果填好数据以后先用鼠标点其他行,在去更新就可以更新成功,请问这是为什么?

解决方案 »

  1.   

    datagrid中填一行数据,然后点更新。这个时候datagrid还没有重新绑定数据,所以它还是以前的内容
    要重新绑定一下再更新。
    点其他行,在去更新就可以更新成功,就是因为有了事件触发重新绑定了。
      

  2.   

    /****************************** //rebind();//自己写的方法DataSet change = dataSet11.GetChanges(); 
    if(change != null) 

            int numRows = sqlDataAdapter1.Update(change); 
    MessageBox.Show("数据更新完成 " + numRows + " 行!", 
    "更新",MessageBoxButtons.OK,MessageBoxIcon.Information); 
    dataSet11.AcceptChanges(); 

    else  

    MessageBox.Show("没有需要更新的数据","没有更新", 
    MessageBoxButtons.OK,MessageBoxIcon.Information); 

    /******************************* 
      

  3.   

    在更新之前先把datagrid.Binding()一下就OK了
      

  4.   

    datagrid没有binding()方法啊
      

  5.   

    更新代码里加入类似鼠标点在其他地方执行的过程
    比如可以试试加入一个把焦点移出gridview的语句 试试
      

  6.   

    更新之后重新DataBind()一下就可以了 
      

  7.   

    1、确定添加记录后,DataSet里也增加了记录,并且RowState是添加的。
    2、确定要更新的表中有主键。
      

  8.   

    还是没解决
    dataGrid1.DataSource = dataSet11.project;这样重新绑定没的用
      

  9.   

    谢谢了,解决了
    在运行的时候绑定应该用SetDataBinding(dataSource,dataMermber)
    胜利结帖