문제

AdvancedDatagrid에 문제가 있습니다. 필드가 실제 및 추정치가 타이머 기능으로 변경되기를 원하지만 작동하지 않습니다. 그것은 트리 구조의 붕괴로 모든 ADG를 새로 고치는 것만으로 만 작동합니다. 트리가 "폭발"되면 실제 및 추정 필드는 새로 고침되기를 원합니다. 내보다 지정되지 않아서 죄송합니다. 코드는 다음과 같습니다

<?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>
도움이 되었습니까?

해결책

당신은 변화하지 않습니다 dataProvider 에서 Timer 매니저. 당신은 그냥 전화하고 있습니다 randomValues() 숫자를 반환하는 메소드.

부르다 gc.source = dpCollection(); 타이머 핸들러에서.


업데이트: 보기에,, IGroupingCollection 그룹의 변경 사항을 자동으로 감지하지 않으므로 그룹 속성을 설정 한 후 뷰를 업데이트하려면 새로 고침 () 메소드를 호출해야합니다.

이 문제에 대한 작업이있는 것 같습니다. 여기

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top