Обновление полей данных AdvancedDataGrid

У меня проблема с AdvancedDataGrid; я хочу, чтобы поля Actual и Estimate менялись с помощью функции таймера, но это не работает. Работает только обновлением всех адг при крахе древовидной структуры. Я хочу, чтобы, если дерево "взорвалось", обновлялись только фактические и оценочные поля. Извините за мой неправильный английский. Вот код

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication initialize="init();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
        <![CDATA[
            import mx.utils.ArrayUtil;
            import mx.collections.*;
            import flash.utils.Timer;
            import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
            [Bindable]
            public var randomNumber:Number = new Number
            public function randomValues():Number
            {
            randomNumber=Math.random()*100
            randomNumber*=100
            randomNumber=Math.round(randomNumber)
            randomNumber/=100
            trace(randomNumber)
            return randomNumber
            }   
            public var timer:Timer = new Timer(20);
            public function timing():void{
            timer.addEventListener(TimerEvent.TIMER,function(event:Event):void{randomValues()});
            }
            [Bindable]
            public var dpFlat:ArrayCollection = new ArrayCollection;
            public function dpCollection():ArrayCollection
            {
            dpFlat= new ArrayCollection([
            {Continente:"Europa", Paese:"Italia", Actual:randomValues(), Estimate:randomValues()},
            {Continente:"Europa", Paese:"Germania", Actual:randomValues(), Estimate:randomValues()}
                ]);
            return dpFlat;
            }

            public function init():void{
            dpCollection()
            randomValues()  
            }


        ]]>
        </mx:Script>
        <mx:AdvancedDataGrid horizontalScrollPolicy="on" columnWidth="100" resizableColumns="false" id="myADG" width="469" height="223" color="0x323232" initialize="gc.refresh();">        
                <mx:dataProvider>
                <mx:GroupingCollection id="gc" source="{dpCollection()}">
                    <mx:grouping>
                        <mx:Grouping>
                            <mx:GroupingField name="Continente"/>
                            <mx:GroupingField name="Paese"/>
                        </mx:Grouping>
                    </mx:grouping>
                </mx:GroupingCollection>
                </mx:dataProvider>        

            <mx:columns>
                <mx:AdvancedDataGridColumn dataField="Continente"/>
                <mx:AdvancedDataGridColumn dataField="Paese"/>
                <mx:AdvancedDataGridColumn id="act" dataField="Actual"/>
                <mx:AdvancedDataGridColumn id="est" dataField="Estimate"/>


            </mx:columns>
    </mx:AdvancedDataGrid>
    <mx:TextArea text="{randomNumber}" x="477" y="10"/>
    <mx:Button click="timing()" x="10" y="231" label="Start timing function"/>
    <mx:Button click="timer.start()" x="161" y="231" label="Start the time"/>
    <mx:Button click="timer.stop()" x="275" y="231" label="Stop the time"/>
</mx:WindowedApplication>

person Fsee    schedule 27.11.2009    source источник


Ответы (1)


Вы не меняете dataProvider в обработчике Timer. Вы просто вызываете метод randomValues(), который просто возвращает число.

Вызов gc.source = dpCollection(); из обработчика таймера.


Обновление: Очевидно, IGroupingCollection не обнаруживает изменения в группе автоматически, поэтому вы должны вызвать метод refresh() для обновления представления после установки свойства группы.

Кажется, эту проблему можно обойти здесь

person Amarghosh    schedule 27.11.2009
comment
это не работает или, может быть, я не могу установить обработчик таймера, не могли бы вы написать несколько кодов строк? Благодарность - person Fsee; 27.11.2009
comment
это не работает ... это работает только с простой сеткой данных, проблема заключается в изменении только некоторых полей расширенной сетки данных. Возможно, проблема в коллекции массивов, потому что, если я обновлю всю коллекцию массивов, у меня будут новые случайные значения, но иерархическое древовидное представление рухнет. - person Fsee; 30.11.2009