SC 10-09-2012 8.2p, reproduceable in IE8,IE9
We currently have this issue in production where getDisplayField is being called on a listgrid that WAS on the page prior to the action that we have just performed. We are working on getting a standalone testcase but in the meantime, I'd like to get your feed back on our findings. We put IE debugger on so that it breaks on exception and here's the stack of calls that we've found - We did not find a single call from our code in the stack so we've assumed that it is coming from internal SC code.
Basically, the exception happens in getDisplayField where this.getDataSource() is returning a string representation of the data source and not the ds object itself. What's really troublesome is that the listgrid is no longer in view and therefore should not be updated for anything anymore. Any thoughts on how this could happen?
We currently have this issue in production where getDisplayField is being called on a listgrid that WAS on the page prior to the action that we have just performed. We are working on getting a standalone testcase but in the meantime, I'd like to get your feed back on our findings. We put IE debugger on so that it breaks on exception and here's the stack of calls that we've found - We did not find a single call from our code in the stack so we've assumed that it is coming from internal SC code.
Code:
> isc_ListGrid_getDisplayField isc_ListGrid_getFieldDisplayType isc_ListGrid__formatBooleanFieldAsImages isc_ListGrid_showValueIconOnly isc_ListGrid_getCellValue anonymous isc_GridRenderer__getCellValue isc_GridRenderer_getTableHTML isc_GridRenderer_getInnerHTML isc_c_Class_invokeSuper isc_c_Class_Super isc_GridBody_getInnerHTML isc_Canvas__getInnerHTML isc_Canvas__updateInnerHTML isc_c_Class_invokeSuper isc_GridRenderer__updateInnerHTML isc_Canvas__updateHTML isc_Canvas_redraw isc_c_Class_invokeSuper isc_GridRenderer_redraw isc_c_Class_invokeSuper isc_GridBody_redraw isc_Layout_resizeMembers isc_Layout_layoutChildren isc_ListGrid_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Canvas__completeResizeBy isc_Canvas_resizeBy isc_Canvas_resizeTo isc_Layout_resizeMembers isc_Layout_layoutChildren isc_Layout_reflowNow Anonymous Function isc_c_EventHandler_runTeas isc_c_EventHandler__clearThread isc_c_Timer__fireTimeout anonymous
Basically, the exception happens in getDisplayField where this.getDataSource() is returning a string representation of the data source and not the ds object itself. What's really troublesome is that the listgrid is no longer in view and therefore should not be updated for anything anymore. Any thoughts on how this could happen?
Code:
isc_ListGrid_getDisplayField(_1) { var _2=_1.displayField; if(_2!=null) { var _3=_1.optionDataSource?isc.DataSource.get(_1.optionDataSource):null; if(_3!=null) _2=_3.getField(_2); else { _2=this.getField(_2); if(_2==null&&this.dataSource!=null) { _2=this.getDataSource().getField(_1.displayField) } } } return _2 } isc_Canvas_getDataSource(){ if(isc.isA.String(this.dataSource)){ if(this.serviceNamespace||this.serviceName){ this.dataSource=this.lookupSchema() } else{ var _1=isc.DS.get(this.dataSource); if(_1!=null) return _1; _1=this.getWindow()[this.dataSource]; if(_1&&isc.isA.DataSource(_1)) return(this.dataSource=_1) } } return this.dataSource }
Comment