#1 below sounds way fishy. For performance reasons List based controls create only those ItemRenderers that would be viewable in the List and maybe 1 or 2 more. As the user scrolls, this set is re-used. What you have done is bypass this completely by making ALL rows visible and thus 1350 instances of your ItemRender, sitting inside a List control among various other pieces. A List control has built in scrolling, eh?
Douglas Knudsen http://www.cubicleman.com this is my signature, like it? On Tue, Jan 5, 2010 at 4:57 PM, sharath reddy <[email protected]>wrote: > > > Hi All, > > I'm loading an AdvancedDataGrid with an ArrayCollection of about 1350 items > retrieved from the server. Each record has 5 fields, and I am using one very > simple custom renderer. The grid doesn't seem to be able to handle these > many records, and throws the following error: > > Error #1502: A script has executed for longer than the default > timeout period of 15 seconds. > > (I have attached the full stack trace at the end of the email) > > I replaced ADG with the regular data grid, and experienced the same > problem. > > If I 'slice' the ArrayCollection and add only the first 1000 records, it > seems to work (after some delay). The optimum performance seems to be with > about 300 records. I found a couple of work-arounds: > > 1. Currently, I set the height of the grid to be equal to the number of > rows returned from the server. Scrollbars are turned off on the grid and > turned on for the VBox that contains the grid. > > If I set a fixed height for the data grid and turn ON the vertical > scrollbars, the data renders correctly. I'm guessing that this allows the > data grid to re-cycle renderers while scrolling and leads to more efficient > performance. However, I don't want scrollbars on the grid, only on the > parent container. > > 2. I can develop a paging implementation of the data grid, displaying about > 500 records on each page. Again, I would rather not do this. > > Sorry for the long-winded post, any suggestions/workarounds to tackle this > issue? Thanks for your help! > > Sharath > > Full Stack trace of the exception: > > Error: Error #1502: A script has executed for longer than the default > timeout period of 15 seconds. > at > > mx.managers.layoutClasses::PriorityQueue/removeLargestChild()[C:\autobuild\3.2.0 > > \frameworks\projects\framework\src\mx\managers\layoutClasses\PriorityQueue.as:145] > at mx.managers::LayoutManager/validateClient()[C:\autobuild\3.2.0 > \frameworks\projects\framework\src\mx\managers\LayoutManager.as:940] > at mx.core::UIComponent/validateNow()[C:\autobuild\3.2.0 > \frameworks\projects\framework\src\mx\core\UIComponent.as:5679] > at > > mx.controls.dataGridClasses::DataGridBase/updateRendererDisplayList()[C:\autobuild\3.2.0 > > \frameworks\projects\framework\src\mx\controls\dataGridClasses\DataGridBase.as:1184] > at > mx.controls.dataGridClasses::DataGridBase/drawItem()[C:\autobuild\3.2.0 > > \frameworks\projects\framework\src\mx\controls\dataGridClasses\DataGridBase.as:1154] > at > > mx.controls.dataGridClasses::DataGridBase/drawVisibleItem()[C:\autobuild\3.2.0 > > \frameworks\projects\framework\src\mx\controls\dataGridClasses\DataGridBase.as:1127] > at > mx.controls.dataGridClasses::DataGridBase/makeRows()[C:\autobuild\3.2.0 > > \frameworks\projects\framework\src\mx\controls\dataGridClasses\DataGridBase.as:708] > at > > mx.controls.dataGridClasses::DataGridBase/makeRowsAndColumns()[C:\autobuild\3.2.0 > > \frameworks\projects\framework\src\mx\controls\dataGridClasses\DataGridBase.as:593] > at mx.controls::DataGrid/makeRowsAndColumns()[C:\autobuild\3.2.0 > \frameworks\projects\framework\src\mx\controls\DataGrid.as:1538] > at > > mx.controls.listClasses::ListBase/makeRowsAndColumnsWithExtraRows()[C:\autobuild\3.2.0 > > \frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:1360] > at > mx.controls.listClasses::ListBase/updateDisplayList()[C:\autobuild\3.2.0 > > \frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:3658] > at > > mx.controls.dataGridClasses::DataGridBase/updateDisplayList()[C:\autobuild\3.2.0 > > \frameworks\projects\framework\src\mx\controls\dataGridClasses\DataGridBase.as:581] > at mx.controls::DataGrid/updateDisplayList()[C:\autobuild\3.2.0 > \frameworks\projects\framework\src\mx\controls\DataGrid.as:1437] > at > mx.controls.listClasses::ListBase/validateDisplayList()[C:\autobuild\3.2.0 > > \frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:3280] > at > mx.managers::LayoutManager/validateDisplayList()[C:\autobuild\3.2.0 > \frameworks\projects\framework\src\mx\managers\LayoutManager.as:622] > at > mx.managers::LayoutManager/doPhasedInstantiation()[C:\autobuild\3.2.0 > \frameworks\projects\framework\src\mx\managers\LayoutManager.as:695] > at Function/http://adobe.com/AS3/2006/builtin::apply() > at mx.core::UIComponent/callLaterDispatcher2()[C:\autobuild\3.2.0 > \frameworks\projects\framework\src\mx\core\UIComponent.as:8628] > at mx.core::UIComponent/callLaterDispatcher()[C:\autobuild\3.2.0 > \frameworks\projects\framework\src\mx\core\UIComponent.as:8568] > > >

