Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 13.01.2012, 12:29
zorexundra вне форума Посмотреть профиль Отправить личное сообщение для zorexundra Найти все сообщения от zorexundra
  № 1  
Ответить с цитированием
zorexundra

Регистрация: Dec 2010
Сообщений: 177
Question Инициализация AdvancedDataGrid

Здравствуйте! Помогите, пожалуйста, разобраться в проблеме!
Есть приложение 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>

Создать новую тему   Часовой пояс GMT +4, время: 15:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:50.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.