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