2010-06-10 2 views
0

이 코드를 가지고플렉스 : 데이터 그리드에 수직 스크롤에 오류

<mx:DataGrid id="tempListDG" itemDoubleClick="doubleClickHandler(event)" width="100%" height="100%" rowHeight="110" 
      draggableColumns="false" sortableColumns="false" allowMultipleSelection="false"> 
      <mx:columns> 
       <mx:DataGridColumn id="chkSel" headerText=" " width="15" sortable="false"> 
        <mx:itemRenderer> 
         <mx:Component> 
          <mx:HBox horizontalScrollPolicy="off" verticalScrollPolicy="off" paddingLeft="3"> 
           <mx:Script> 
            <![CDATA[ 

            ]]> 
           </mx:Script> 
           <mx:CheckBox name="chkSel" selected="false" /> 
          </mx:HBox> 
         </mx:Component> 
        </mx:itemRenderer> 
       </mx:DataGridColumn> 
       <mx:DataGridColumn id="sum" dataField="@summary" headerText="Summary Description" width="280" > 
        <mx:itemRenderer> 
         <mx:Component> 
          <mx:HBox name="thumbs" creationComplete="setThumbnailImage(event)" verticalAlign="top" verticalScrollPolicy="off"> 
           <mx:Script> 
            <![CDATA[ 
             import mx.controls.Text; 
             import com.azaaza.containers.HBox; 
             import com.azaaza.controls.Image; 
             import com.hwakin.tavi.model.ModelLocator; 
             import mx.controls.DataGrid; 

             private function setThumbnailImage(e:Event):void{ 
              var dg:DataGrid = DataGrid(e.target.parent.parent); 
              var dCounter:int = TemplateOpenPanel(dg.parent.parent).dCount; 
              if (dCounter+1 > XMLList(dg.dataProvider).length()){ 
               dg.validateDisplayList(); 
               return; 
              } 
              img.load(ModelLocator.getInstance().StringToBitmap(XMLList(dg.dataProvider)[dCounter][email protected])); 
              img.width = 80; 
              img.height = 110; 
              txt.htmlText = XMLList(dg.dataProvider)[dCounter][email protected]; 
              txt.maxHeight = 110; 
              dCounter++;   
              TemplateOpenPanel(dg.parent.parent).dCount = dCounter; 
             } 
            ]]> 
           </mx:Script> 
           <mx:Image id="img">         
           </mx:Image> 
           <mx:Text id="txt">         
           </mx:Text> 
          </mx:HBox> 
         </mx:Component> 
        </mx:itemRenderer> 
       </mx:DataGridColumn>     
       <mx:DataGridColumn dataField="@dateCreated" headerText="Date Created" width="100" /> 
       <mx:DataGridColumn dataField="@dateModified" headerText="Date Modified" width="100"/> 
       <mx:DataGridColumn dataField="@guid" headerText="guid" visible="false"/> 
       <mx:DataGridColumn dataField="@fileName" headerText="File Name" visible="false"/> 
       <mx:DataGridColumn dataField="@tempXml" headerText="tempXml" visible="false"/> 
      </mx:columns> 
     </mx:DataGrid> 

"합"라는 이름의 DataGridColumn의 ID가 내가 를로드 XML에 의해 주어진 이미지와 텍스트를 생성하지만 난 스크롤을 사용할 때 내가 오류가 발생했습니다 DataGrid의. 이미지가 정렬되지 않고 dateCreated 및 dateModified와 같은 모든 데이터가 섞여서 표시됩니다.

.. 이것 좀 도와주십시오 감사

답변

0

당신이 creationCompelte 이벤트 5 아이템 렌더러를 볼 경우, (만 7 생성을 사용해서는 안, 렌더러는 재활용 및 재사용되는 항목을 기억하고 그들이 재사용되지만 한 번만 생성되므로 작성이 완료되면 한 번만 수행됩니다.)

dataChange 이벤트를 사용하는 것은 itemRenderer의 데이터가 생성 될 때마다 작동합니다.

2

여전히 답을 찾고 있다면 코드에 이것을 추가하십시오.

1)

protected function dgtempListDG_scrollHandler(event:ScrollEvent):void 
{ 
    // TODO Auto-generated method stub 

    tempListDG.invalidateDisplayList(); 
} 

2)

scroll = "dgtempListDG_scrollHandler(event)" 

mx:datagrid이 추가.