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]