2013-02-22 3 views
2

사용자 지정 itemRenderer 및 모눈 바깥에있는 라디오 단추 그룹을 사용하는 advancedDataGrid가 있습니다. 라디오 버튼을 선택하면 itemrenderers의 표시 상태를 업데이트해야합니다. property 속성을 사용하여 클래스 속성을 사용하여 렌더러에 매개 변수를 전달합니다.기존 DataGrid ItemRenderers 새로 고침

그리드에 새 행을 추가하면 itemrenderer가 올바른 표시 상태로 나타나지만 라디오 버튼을 변경할 때 이미 화면에 표시된 렌더러가 표시를 새로 고치지 않습니다. 나는 dataprovider에서 invalidateList()와 invalidateDisplayList()를 호출하고, dataprovider를 null로 설정 한 다음 다시 설정하고, itemrenderer 속성을 null로 설정 한 다음 재설정하는 중 .... 아무것도 렌더러를 업데이트하지 않습니다.

표가 tabNavigator에 있으므로 탭을 변경 한 다음 다시 돌아 오면 렌더러가 모두 다시 그려지지만 허용 가능한 해결 방법은 아닙니다. 그리드에 현재의 렌더러를 모두 파괴하고 다시 그릴 것을 명령하는 방법은 무엇입니까?

+0

새로운 classfactory를 만드시겠습니까? – user1875642

+0

기존 공장에서 속성을 설정하고 새 속성을 만들려고했습니다. 어느 쪽도 효과가 없었다. – jhinkley

+0

그것은 놀랍습니다. grid.itemRenderer를 새로운 ClassFactory로 설정하면 모든 이전 itemrenderers가 제거되고 새 itemRenderers가 만들어집니다. 디버깅을 시도하고 AdvancedDataGridBase에서 purgeItemRenderers 함수가 실행되는지 확인합니다. – user1875642

답변

2

알아 냈어. 다음은 단순화 된 버전입니다.

<mx:AdvancedDataGrid 
    id="myDatagrid"> 
<mx:columns> 
    <mx:AdvancedDataGridColumn 
      dataField="Full_Name"> 
    </mx:AdvancedDataGridColumn> 
</mx:columns> 
<mx:rendererProviders> 
    <mx:AdvancedDataGridRendererProvider 
      renderer="{rendererFactory}" 
      columnSpan="0" 
      columnIndex="0" 
      depth="2"/> 
    <mx:AdvancedDataGridRendererProvider 
      renderer="{anotherFactory}" 
      columnIndex="0" 
      columnSpan="0" 
      depth="1"/> 
</mx:rendererProviders> 

변경할 경우 {rendererFactory} (기존 또는 신규 작성하여 갱신), 그것은 새로 고침을 트리거하지 않습니다. 공장을 변경 한 후, 나는 myDatagrid.rendererProviders = myDatagrid.rendererProviders를 수행하고 업데이트를 트리거하고 렌더러를 재활용했습니다.