2011-02-11 84 views
1

我在自定義的datagridColumn中使用單元格呈現爲checkBox而不是dafault itemRenderer(即字符串),這種奇怪的行爲。相關代碼如下:在Flex DataGrid中作爲ItemRenderer的奇怪行爲 - 複選框--FLEX 3

<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一個CheckBox並開始滾動,即itemRenderer與託運箱被越來越重用與仍置selected="true「值,顯示其他記錄。

我會做的就是創建一個itemRenderer的組成部分並覆蓋set data方法的複選框的選中值設置爲它應該是什麼

一些示例代碼從我的頭頂部的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

謝謝我會盡快嘗試。我會回來發佈結果 – 2011-02-11 17:39:25