0

アイテムレンダラーで階層データグリッドを作成しました。すべてが正常に機能しています。グリッドに表示するデータがたくさんあったので、データが読み込まれるたびにスクロールバーが表示されます。スクロール バーをドラッグすると、アイテム レンダラーが正しく動作せず、データ列の一部のデータが欠落しています。この問題を解決する方法を教えてください。

ここで画像を見つける画像をクリック

以下のコードを確認してください:- ` width="100%" height="100%" textAlign="center" autoDrawBackground="false">

<fx:Script>
    <![CDATA[
        import com.hp.pmm.common.ImageLibrary;

        import mx.collections.ArrayCollection;
        import mx.controls.Alert;
        import mx.resources.ResourceManager;
        private var _data:Object;           

        override public function set data(value:Object):void
        {               
            super.data = value;
            var showButton:String= '';
            var i:int=0;
            var j:int=0;

            var showDataForChildren:String;

            if(value.hasOwnProperty("Data_Transfer")) 
            {               
                showButton = value.Data_Transfer;

                if (showButton == "Show_Button") {

                    startId.visible= true;
                    startId.includeInLayout= true;
                    abortId.visible= true;
                    abortId.includeInLayout= true;
                    imgStatus.visible=false;
                    lblStatus.visible= false;
                    imgStatus.includeInLayout= false;
                    lblStatus.includeInLayout= false;
                }else {
                    lblStatus.text = "--";
                    startId.visible= false;
                    abortId.visible= false;
                    startId.includeInLayout= false;
                    abortId.includeInLayout= false;
                    imgStatus.includeInLayout= true;
                    lblStatus.includeInLayout= true;

                }

            }
        }


        public function clickedOnStart(event:Event):void{

            var startEvent:Event = new Event("clickOnStartButton");
            var parent:EventDispatcher = parentDocument.parentDocument as EventDispatcher;
            if (parent != null)
            {
                parent.dispatchEvent(startEvent);
            }
        } 


        public function clickedOnAbort(event:Event):void{

            var abortEvent:Event = new Event("clickOnAbortButton");
            var parent:EventDispatcher = parentDocument.parentDocument as EventDispatcher;
            if (parent != null)
            {
                parent.dispatchEvent(abortEvent);
            }
        } 


    ]]>
</fx:Script>

<s:HGroup width="100%" gap="5" verticalAlign="middle" horizontalAlign="left" height="100%">
    <!--<mx:Image id="imgStatus"/>
    <mx:Label id="lblStatus" textAlign="left" showTruncationTip="true"  paddingTop="3"/>-->
    <s:HGroup verticalAlign="middle" horizontalAlign="center">              
        <mx:Button label="Start" id="startId" click="clickedOnStart(event)" width="40"  height="20"/>
        <mx:Button label="Abort" id="abortId" click="clickedOnAbort(event)" width="40"  height="20"/>
    </s:HGroup>
    <s:HGroup height="100%">    
            <mx:Image id="imgStatus"/>
            <mx:Label id="lblStatus" textAlign="left" showTruncationTip="true"  paddingTop="3" />
    </s:HGroup>


</s:HGroup>

`

4

1 に答える 1

0

コードを見ずに、アイテムレンダラーの動作に問題があると推測します。それらはリサイクルされ、過去にも問題を引き起こしました。データが最初に読み込まれたときに正しく表示され、スクロールを開始するまで混乱し始めないことは間違いありません。

このGoogle検索の結果を見てください:

https://www.google.com/search?q=flex+spark+datagrid+virtual+layout&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a#hl= en&client = firefox-a&hs = L4Y&rls = org.mozilla:en-US%3Aofficial&sclient = psy-ab&q = flex + datagrid + itemrenderer + recycling&oq = flex + datagrid + itemrenderer + rec&aq = 0A&aqi = q-A1&aql =&gs_l = serp 33i29.347849.348490.2.350175.3.3.0.0.0.0.266.752.2-3.3.0 ... 0.0.ULkB2IYzfzs&pbx = 1&bav = on.2、or.r_gc.r_pw.r_cp.r_qf。、cf.osb&fp = fc4777bf82d127e8&biw = 1600 = 979

編集:提供されたサンプルコードに応じて以下のコードを追加

        if(value.hasOwnProperty("Data_Transfer")) 
        {               
            showButton = value.Data_Transfer;

            if (showButton == "Show_Button") {

                startId.visible= true;
                startId.includeInLayout= true;
                abortId.visible= true;
                abortId.includeInLayout= true;
                imgStatus.visible=false;
                lblStatus.visible= false;
                imgStatus.includeInLayout= false;
                lblStatus.includeInLayout= false;
            }else {
                lblStatus.text = "--";
                startId.visible= false;
                abortId.visible= false;
                startId.includeInLayout= false;
                abortId.includeInLayout= false;
                imgStatus.includeInLayout= true;
                lblStatus.includeInLayout= true;

            }

        }
        else
        {
            //set all values to your equivalent of no data
        }
于 2012-05-02T11:46:12.423 に答える