سؤال

ولدي مشكلة مع 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 "> هنا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top