日期:2014-05-18  浏览次数:20791 次

奇怪的问题,高分求教,进者有分!
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中填一行数据,然后点更新按牛,用上面的代码更新,提示没有需要更新的数据,但是如果填好数据以后先用鼠标点其他行,在去更新就可以更新成功,请问这是为什么?

------解决方案--------------------
datagrid中填一行数据,然后点更新。这个时候datagrid还没有重新绑定数据,所以它还是以前的内容
要重新绑定一下再更新。
点其他行,在去更新就可以更新成功,就是因为有了事件触发重新绑定了。
------解决方案--------------------
进来关注下~~~
------解决方案--------------------
UP
------解决方案--------------------
/****************************** 

//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); 

/*******************************
------解决方案--------------------
在更新之前先把datagrid.Binding()一下就OK了
------解决方案--------------------
学习
------解决方案--------------------
更新之后重新DataBind()一下就可以了
------解决方案--------------------
1、确定添加记录后,DataSet里也增加了记录,并且RowState是添加的。
2、确定要更新的表中有主键。