AdvancedDataGrid dataFields التحديث
-
05-07-2019 - |
سؤال
ولدي مشكلة مع AdvancedDataGrid. أريد مجالات الفعلية وتقدير لتغيير مع وظيفة مؤقت ولكنه لا يعمل. أنها لا تعمل إلا عن طريق تحديث جميع مساعد المدير العام مع انهيار هيكل شجرة. أريد أنه إذا كانت الشجرة "انفجرت" فقط الحقول الفعلية وتقدير التحديث. آسف لبلدي uncorrect الإنجليزية. هنا هو رمز
<?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
لا يكشف تغييرات على مجموعة تلقائيا، لذلك يجب استدعاء الأسلوب تحديث () لتحديث طريقة العرض بعد تعيين الخاصية المجموعة.
ويبدو أن هناك عمل حول هذه المسألة <لأ href = "http://techrays.wordpress.com/2008/11/19/preserving-the-open-nodes-in-advanceddatagrid-after-re- تجمع / "يختلط =" نوفولو noreferrer "> هنا