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