2012-05-02 9 views
0

アイテムレンダラーを使用して階層型のデータグリッドを作成しました。すべてがうまくいきます。グリッドに表示するデータがたくさんあるので、データがロードされるたびにスクロールバーが表示されます。スクロールバーをドラッグすると、アイテムレンダラーが正常に動作せず、データ列データの欠落がほとんどありません。問題の解決方法を知っています。スクロールバーを使用すると、アイテムレンダラー付きの階層型データグリッド

画像ここImage click

以下のコードをチェックしてください見つける: - autoDrawBackground = "false" を ` 幅= "100%" 高さ= "100%" textAlign = "センター">

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

`

答えて

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.3.0.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&bih=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 
     } 
+0

を提供する: - 私は、コードや画像をアップロードしましたまた、それをチェックして、コードの問題を知らせてください。 – Ravikanth

+0

上記を試してください。あなたの主な "if"には "else"がないので、レンダリングの失敗を簡単に見ることができました。そのショットを与えて、私に知らせてください。 – Dom

+0

else条件を追加するとうまく動作します。ドンに感謝します。 – Ravikanth

関連する問題