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

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

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

Регистрация: Jan 2002
Сообщений: 149
Отправить сообщение для billion с помощью ICQ
Post Как правильно написать override set data?

Пока писал уже разобрался но если кому интересно.....

Здравствуйте!

Помогите плиз разобраться с set data. Уже второй раз сталкиваюсь с глюком, когда при скролле в листах и датагридах итемам присваиваются значения других итемов. Почему это происходит понятно и народ подсказал что надо сделать: переписать set data. А вот как это сделать не пойму. Весь инет облазил, не могу догнать.

есть у меня код, который обновляет данные в датагрид:

Код AS3:
dg.dataProvider = null;
var arr:ArrayCollection = new ArrayCollection();
dg.dataProvider = arr;
for (var i:int=0;i<obj.length;i++) {
	arr.addItem(obj[i]);
}
dg.dataProvider = arr;
дык вот после обновления, данные перемешиваются. там где должно быть пусто, появляются данные из того же столбца, но из других строк.

для каждого столбца у меня примерно такой код:

Код AS3:
<s:GridColumn dataField="M" headerText="Текст">
	<s:itemRenderer><fx:Component>
		<s:GridItemRenderer clipAndEnableScrolling="true">
			<fx:Script>
				<![CDATA[
					override public function prepare(hasBeenRecycled:Boolean):void {
						if (data!==null) {
							det.text = data.M+'/'+data.Q;
							if (data.R!==undefined) {det.text+='\n'+data.R;}
						}
					}
				]]>
			</fx:Script>
		<s:VGroup left="7" top="9" horizontalCenter="0"  textAlign="center">
			<s:Label id="det"/>
		</s:VGroup>
	</s:GridItemRenderer>
</fx:Component></s:itemRenderer>  
</s:GridColumn>
помогите плиз правильно заставить работать датагрид

Добавлено через 5 минут
пробовал менять на код

Код AS3:
	override public function set data(value:Object):void{
	super.data = value;
	if(!data)return
	if (data.PH !== '' && data.PH !== undefined) {
		txtPhone.textFlow=TWF.getFlow(TWF.getPhones_ES(data.PH));
	}
	invalidateProperties();
	dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}
не помогло. всё равно значения прыгают

Добавлено через 13 минут
тьфу блин.... всё просто оказалось

Код AS3:
override public function set data(value:Object):void{
	super.data = value;
	if(!data)return
	if (data.PH !== '' && data.PH !== undefined) {
		txtPhone.textFlow=TWF.getFlow(TWF.getPhones_ES(data.PH));
	}
	else {
//-------------
		txtPhone.textFlow=null;
//-------------
	}
	invalidateProperties();
	dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}


Последний раз редактировалось billion; 06.12.2011 в 14:01.
Создать новую тему Ответ Часовой пояс GMT +4, время: 07:36.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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