PDA

Просмотр полной версии : Не могу сослаться на компонент в обработчике события таймера.


maa
28.07.2008, 14:31
В функции updateArchiveEventsTable, привязанной к таймеру, не видна таблица archiveEvents_table. Почему так и как добратся до нее??


<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*" horizontalAlign="center" verticalAlign="center"
width="100%" height="100%" layout="absolute" creationComplete="{getInit()}">
<mx:Script>
<![CDATA[


private var timer:Timer=null;

private function getInit():void
{
this.timer = new Timer(5000, 0);
this.timer.addEventListener(TimerEvent.TIMER,updateArchiveEventsTable);
timer.start();
};
//****************************************

public function updateArchiveEventsTable(pageNum:int=1, updateFilter:Boolean=false):void
{
Alert.show("WWW1="+this.archiveEvents_table,"Сообщение");//Возвращает null
archiveEvents_table.dataProvider=new ArrayCollection(); }

]]>
</mx:Script>

<mx:TabNavigator x="0" y="0" width="100%" height="100%" id="nb" >
<mx:Canvas label="Текущие" id="tab0" width="100%" height="100%" >

<mx:DataGrid id="archiveEvents_table" dataProvider="{new ArrayCollection()}"
variableRowHeight="true" width="100%" x="0" backgroundAlpha="0.5"
draggableColumns="true" selectable="true" top="40" bottom="0">
<mx:columns>

<mx:DataGridColumn dataField="id" headerText="ID" width="90" />
<mx:DataGridColumn dataField="dt" headerText="Дата" width="90"/>
<mx:DataGridColumn dataField="tm" headerText="Время" width="90"/>
<mx:DataGridColumn dataField="src" headerText="Источник" width="120"/>
<mx:DataGridColumn dataField="labelType" headerText="Тип" width="120"/>
<mx:DataGridColumn dataField="type" visible="false"/>
<mx:DataGridColumn dataField="msg" headerText="Сообщение" />

</mx:columns>
</mx:DataGrid>
</mx:Canvas>

</mx:TabNavigator>


</mx:Application>

etc
28.07.2008, 14:49
Вывело:
WWW1=FlexTest0.nb.tab0.archiveEvents_table

JesterAntik
28.07.2008, 18:28
ну если брать приведенный код то не подключены два класса Alert и ArrayCollection.
А вообще у тебе значения таблицы берутся всегда из нового ArrayCollection. И даже когда ты их задаешь в функции, то они перетираются {new ArrayCollection()}
если нет значения по умолчанию для полей таблицы то просто не трогай атрибут dataProvider

maa
31.07.2008, 11:54
Вывело:
WWW1=FlexTest0.nb.tab0.archiveEvents_table
Спасибо. Действительно. У самого резко заработала, а почему раньше возврашала нул так сам и не понял. :(