2009-11-27 38 views
0

我有一个AdvancedDataGrid的问题;我希望字段实际和估计改变与定时器功能,但它不起作用。它只能通过树形结构的崩溃刷新所有的adg。我想如果树被“爆炸”,只有实际和估计字段刷新。对不起,我的英文不正确。 下面的代码AdvancedDataGrid数据字段刷新

<?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> 

回答

0

你是不是在Timer处理程序改变dataProvider。您只是调用返回数字的randomValues()方法。

从定时器的处理程序调用gc.source = dpCollection();


更新:Apparently,该IGroupingCollection没有自动检测更改一组,所以你必须调用refresh()方法来设置该组属性后更新视图。

似乎有围绕一个工作,这个问题here

+0

它不工作或也许我不能设置定时器的处理程序 能否请你写一些代码行? 谢谢 – Franky 2009-11-27 16:31:40

+0

查看更新。 – Amarghosh 2009-11-27 17:47:42

+0

它不起作用...它只适用于简单的数据网格,问题只改变了advanceddatagrid的一些字段。也许问题是在arraycollection,因为如果我刷新整个arraycollection我有新的随机值,但分层树视图崩溃.. – Franky 2009-11-30 09:59:06