以文本方式查看主题 - 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 -- 做个例子,单独展现该问题,否则纸上谈兵很难找到问题 |