代码之家  ›  专栏  ›  技术社区  ›  Fseee

高级数据报数据字段刷新

  •  0
  • Fseee  · 技术社区  · 15 年前

    我的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>
    
    1 回复  |  直到 15 年前
        1
  •  0
  •   Amarghosh    15 年前

    你没有改变 dataProvider Timer 处理程序。你只是打电话给 randomValues() 方法,只返回一个数字。

    呼叫 gc.source = dpCollection(); 从计时器的处理程序。


    更新: Apparently , the IGroupingCollection 不会自动检测对组的更改,因此必须在设置Group属性后调用refresh()方法更新视图。

    这个问题似乎有解决办法。 here