DataSet Iterator 遍历、遍历之后的失效问题原创
金蝶云社区-吴锐雄
吴锐雄
17人赞赏了该文章 4471次浏览 未经作者许可,禁止转载编辑于2023年06月26日 10:11:24

创作不易,如果文章对您有帮助,请为我点击一个朴实无华的赞^_^,我会更有动力地更新文章。


1.使用DataSet过程中,如果需要遍历或者读取DataSet的数据,那么可以使用Iterator迭代器进行遍历


图片1.png



2.当Iterator迭代器 遍历完成之后,DataSet会调用close()方法,之后不允许再次遍历。如果此时把DataSet传递给报表的查询函数,会有如下报错,报表也不会显示响应的数据:

图片2.png



解决方案

在遍历之前调用copy()复制为另一个DataSet。

图片3.png



3.在源码中,可以看到迭代器遍历完成之后,是如何一步一步关闭DataSet的:

创建AutoCloseIterator

图片4.png


遍历完成之后调用close回调

图片5.png

图片6.png


最终调用realClose()关闭掉dataset

图片7.png




赞 17