日期:2014-05-19  浏览次数:20966 次

winform中DataGrid的数据更新原理(用WebService提供的DataSet)
我的项目还在用VS   2003做.使用Web   Service得到一个DataSet,然后绑定到DataGrid上(是WinForm的DataGrid).一段时间后我需要刷新DataGrid的数据源.
我发现刷新数据源时如果直接从Web   Service再次得到一个DataSet,将DataGrid的DataSource设为该DataSet,运行时会发生错误(具体是 "xxx数据行不属于yyy数据表 ",但实际上xxx数据行肯定是属于yyy数据表的),即使先将DataGrid的DataSource设为null也没有用(此时DataGrid会变空,新的数据集没有被绑定上去).
后来在 < <Windows   Forms程序设计> > 上查到,象这种情况,需要将现有数据集清空,然后将新得到的数据集中的数据拷到现有数据集中即可,即:
dataSet1.Clear();
dataSet1.Merge(newDataSet);
我试了果然就可以了.
但是我实在是没理解这么做的道理,为什么直接用下面的代码不起作用,绑定会丢失呢?
DataSet   newDataSet   =   myWebService.GetDataSet();
dataGrid1.SetDataBinding(newDataSet, "tablename ");
请知道的xd给我说说啊!
谢谢!!!

------解决方案--------------------
好像DataSet与数据库保持握手连接。。。。。。。。
你看一下《ADO.NET2.0高级编程》上面很详细
------解决方案--------------------
当你没有初始化dataSet1的时候再次调用好像里面的数据就乱了吧。所以每次用的时候都要在之前清空,然后再把数据转到dataSet1里面
------解决方案--------------------
应该不会。
你Null了DataGrid ,然后再给的是新的DS因该没有问题。
怀疑可能是你的DS取得时候有问题。
------解决方案--------------------
不太清楚的说。。。对这样的理论性的东西一向不知道怎么回答……
回头要好好学习这些了