2009-07-15 6 views
0

私はiteamreanderをDataGridに使用しました。グリッドでチェックボックスを選択すると、別の チェックボックスが自動的に選択されます。 PLZの説明私のXMLデータは50レコード以上です。itemRendererのデータグリッド内の問題チェックボックス - まだ問題を解決できません

<mx:DataGrid change="calculate()" id="calamount" x="0" y="3" width="327" 
      height="337" variableRowHeight="true" 
      dataProvider="{xml_coupon.lastResult.Teamcoupon.match_details}" > 
    <mx:columns> 
    <mx:DataGridColumn headerText="Away" dataField="away_team" width="100"/> 
    <mx:DataGridColumn headerText="1" rendererIsEditor="true" 
         editorDataField="selected"> 
     <mx:itemRenderer> 
     <mx:Component> 
      <mx:HBox verticalAlign="middle" paddingLeft="2"> 
      <mx:CheckBox id="checkbox1" selected="{outerDocument.checkedAll}" 
     click="{data.check1=checkbox1.selected;outerDocument.calcValues();}"/> 
      </mx:HBox> 
     </mx:Component> 
     </mx:itemRenderer> 

答えて

4

これはあなたがItemRenderとしてこのコードを使用することができますし、それはあなたの問題を解決しますスクロールしたときに起こるの場合:

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" 
    implements="mx.controls.listClasses.IDropInListItemRenderer"> 

<mx:Script> 

    import mx.events.CollectionEvent; 
    import mx.collections.ArrayCollection; 
    import mx.controls.dataGridClasses.DataGridListData; 
    import mx.controls.DataGrid; 
    import mx.controls.listClasses.BaseListData; 

    private var _listData:BaseListData; 
    private var _dataGrid:DataGrid; 

    [Bindable("dataChange")] 
    public function get listData():BaseListData 
    { 
     return _listData; 
    } 

    public function set listData(value:BaseListData):void { 
     _listData = value; 
     _dataGrid = value.owner as DataGrid; 
    } 

    override public function set data(value:Object):void { 
     super.data = value; 
     cb.selected = value["isSelected"]; 
    } 

    private function onChange():void { 
     data["isSelected"] = cb.selected; 
     var dp:ArrayCollection = _dataGrid.dataProvider as ArrayCollection; 
     dp.dispatchEvent(new CollectionEvent(CollectionEvent.COLLECTION_CHANGE)); 
    } 

</mx:Script> 

<mx:CheckBox id="cb" horizontalCenter="0" change="onChange()" /> 
</mx:Canvas> 
+0

私は、チェックボックスが自動的にパフォーマンス上の理由から –

+0

を選択した理由が何であるかを知っている可能性があり、 DataGridはチェックボックスをキャッシュし、異なる行に再利用します。行が50行ある場合、50個のチェックボックスは作成されません。表示されている数だけチェックボックスを作成し、さらにいくつかのパッドを作成し、スクロールしながら再利用します。このため、明示的に状態を管理する必要があります。 –

+0

コメントありがとうございました..どのように私はそれを解決し、状態を管理できますか?あなたは私にはっきりと教えてくれますか? –

関連する問題