Здравствуйте! Помогите, пожалуйста, разобраться в проблеме!
Есть приложение Flex SDK 3.5, есть экземпляр mx:TitleWindow добавляемый на сцену методом PopUpManager.createPopUp, в этом TitleWindow есть экземпляр mx:AdvancedDataGrid. По событию creationComplete TitleWindow, программно задаётся структура AdvancedDataGrid, десериализируется объект Array и задаётся в качестве источника данных для этого AdvancedDataGrid.
Проблема: при выполнении этой процедуры, часто появляется runtime-ошибка:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at mx.controls::AdvancedDataGrid/findHeaderRenderer()[C:\work\flex\dmv_automation\projects\datavisualisation\src\mx\controls\AdvancedDataGrid.as:1352]
at mx.controls::AdvancedDataGrid/mouseEventToItemRenderer()[C:\work\flex\dmv_automation\projects\datavisualisation\src\mx\controls\AdvancedDataGrid.as:1317]
at mx.controls.listClasses::AdvancedListBase/mouseMoveHandler()[C:\work\flex\dmv_automation\projects\datavisualisation\src\mx\controls\listClasses\AdvancedListBase.as:8085]
В чём может быть проблема? Может десериализация источника данных занимает много времени и в момент инициализации AdvancedDataGrid объект dataProvider ещё не готов? Как отследить момент готовности объекта sourse? Что вообще происходит?
Вот код всего компонента:

Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" creationPolicy="all" creationComplete="componentCompleteHandler()" layout="absolute" width="100%" height="100%" showCloseButton="true" close="mx.core.Application.application.appEventHandler(event);">
<mx:Script>
<![CDATA[
import mx.core.Application;
import mx.utils.Base64Decoder;
import mx.utils.Base64Encoder;
import mx.controls.advancedDataGridClasses.AdvancedDataGridColumnGroup;
import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
protected function componentCompleteHandler():void{
var baDec:Base64Decoder = new Base64Decoder();
baDec.decode(Application.application.DataGrid1.selectedItem.STOLBEC);
var ba2:ByteArray = baDec.toByteArray();
ba2.position = 0;
var newAr:Array = ba2.readObject();
var column1:AdvancedDataGridColumn = new AdvancedDataGridColumn();
column1.dataField = "par1";
var column2:AdvancedDataGridColumn = new AdvancedDataGridColumn();
column2.dataField = "par2";
var groupColumnviewDG:AdvancedDataGridColumnGroup = new AdvancedDataGridColumnGroup();
groupColumnviewDG.dataField = "group";
for each(var element:Object in newAr[0].group){
var newDGColumn:AdvancedDataGridColumnGroup = new AdvancedDataGridColumnGroup();
newDGColumn.dataField = "e"+element.ID;
var newGroupColumn1:AdvancedDataGridColumn = new AdvancedDataGridColumn();
newGroupColumn1.dataField = "p1";
newGroupColumn1.itemRenderer = new ClassFactory(ItemRend1);
var newGroupColumn2:AdvancedDataGridColumn = new AdvancedDataGridColumn();
newGroupColumn2.dataField = "p2";
var newGroupColumn3:AdvancedDataGridColumn = new AdvancedDataGridColumn();
newGroupColumn3.itemRenderer = new ClassFactory(ItemRend2);
newGroupColumn3.dataField = "p1";
newDGColumn.children.push(newGroupColumn1, newGroupColumn2, newGroupColumn3);
groupColumnviewDG.children.push(newDGColumn);
}
viewDG.groupedColumns = new Array(column1, column2, groupColumnviewDG);
viewDG.dataProvider = newAr;
}
]]>
</mx:Script>
<mx:AdvancedDataGrid id="viewDG" width="{Application.application.stage.width-40}" height="{Application.application.stage.height-60}" lockedColumnCount="2" horizontalScrollPolicy="auto" headerWordWrap="true" variableRowHeight="true" wordWrap="true"/>
</mx:TitleWindow>