2011-02-11 2 views
1

dafault itemRenderer (즉, 문자열) 대신 셀을 checkBoxes로 렌더링하도록 사용자 정의한 DataGridColumn에서 이상한 동작이 발생합니다. 다음과 같이 관련 코드는 다음과 같습니다Flex에서 DataGrid - FLEX 3의 ItemRenderer로 사용되는 이상 동작 - CheckBoxes

<mx:DataGridColumn sortable="false" textAlign="center" headerText="" width="20" dataField="colCB"> 
    <mx:itemRenderer> 
    <mx:Component> 
     <mx:CheckBox selected="true"> 
     <mx:Script> 
     <![CDATA[ 
      import mx.controls.Alert; 
      public function change():void{ 
       //TODO 
      } 
     ]]> 
     </mx:Script> 
     </mx:CheckBox> 
    </mx:Component> 
    </mx:itemRenderer> 
</mx:DataGridColumn> 

음, 무슨 일 내가 (다른 행에) 체크 박스, 다른 확인란을 선택 할 때마다 그들은 한 번에 최대 무작위로이 선택 또는 선택 해제 얻고, 내가 아래로 스크롤 경우 또는이다 다시 임의로이 선택되거나 선택 취소됩니다.

아무도 도와 줄 수 있습니까?

미리 감사

입니다 그런데

PS, 나는 시작은 문서 편집기로 장난 때문에 태그의 "<",하지만 내 코드가있어이

답변

6

내 생각을 억제 한 문제는 확인란이 무작위로 선택되고 선택되지 않는다는 것입니다. DataGrid은 더 나은 메모리 성능을 위해 itemRenderers을 재활용합니다. 무엇 가능성이 일어나고있는 것은 체크 상자 itemRenderer 여전히 설정 selected="true "값이 다른 레코드를 표시하기 위해 재사용하기 것을 당신이 itemRendererCheckBox을 확인하고 스크롤 시작하고 있다는 점이다.

는 내가 뭘 할 것은을 만드는 것입니다 itemRenderer를 구성하고 그것이 있어야 무엇에있는 확인란의 선택 값을 설정 set data 메소드를 오버라이드 (override)

의 itemRenderer에 대한 내 머리 위로 (당신이 사용할 수 있도록 조정할 수 있습니다) 떨어져 일부 샘플 코드 :.

<mx:HBox horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
    <fx:Script> 
    <![CDATA[ 

    override public function set data(value:Object):void 
    { 
     super.data = value; 

     if (value["myCheckBoxData"] != null) 
     { 
     myCheckBox.selected = Boolean(value["myCheckBoxData"]); 
     } 

     validateDisplayList(); 
    } 
    ]]> 
    </fx:Script> 

    <mx:CheckBox id="myCheckBox" /> 
</mx:HBox> 
+0

나는 가능한 한 빨리 그것을 시도 할 것이다. 나는 결과를 게시하기 위해 되돌아 올 것이다 –

+0

나는 이것을 잊었다.. 미안하다. –

+0

이 솔루션은 또한 날짜 컨트롤을 사용하여 내 문제를 해결했습니다. –