以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  RecordGrid的怪现象  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=66758)

--  作者:askbang
--  发布时间:2015/4/13 13:36:00
--  RecordGrid的怪现象
      本来已经使用了快一个多月的系统一直没有问题,没想到遇到一个比较另类的使用者,他在频繁切换表的过程中,系统居然报了错。仔细研究了一下发现问题可能原因如下:
      系统有几个模块,每个模块都共享一个内含SQLTable类型表的展示窗口(类型为主窗口)和共享一个内含RecordGrid控件的停靠窗切换不同模块展示主窗口时,停靠窗会随即打开,并根据主窗口SQLTable加载的数据表不同而在RecordGrid中显示相应表的记录信息。这里有点罗嗦,耐心点往下看。
      正常情况下,切换不同的表只要重新定义RecordGrid的 Table 和 Build 即可,可是发现容易报错,所以干脆在每次切换表的时候,先将停靠窗口中的RecordGrid控件删除,重新创建一个,并设定 Table 和 Build后加入到窗口中,发现效果甚佳。可是没想到这个使用者的非常规之举,缺暴露出了这个问题,经过他的频繁切换,系统直接报出“无法将类项为system.componentmodel.baindinglist 1 对象强制转换为类型 dataview”的异常,切换慢了不会报错,一旦快了,1s切换2个模块就报错了,已排除其他原因,定位是RecordGrid控件所致,但不知为何。初步分析是因为RecordGrid绑定Table之后,切换表过程中出现了 Table 未实例化或者说实例化之后还未及时加载外部数据所致,不知这么分析是否正确,望狐表的大大们指点。
      由于系统集成到其他系统,无法提供代码测试。
[此贴子已经被作者于2015/4/13 13:42:39编辑过]

--  作者:Bin
--  发布时间:2015/4/13 13:42:00
--  
做个例子,单独展现该问题,否则纸上谈兵很难找到问题