Flex中DataGrid实现列(包括头部)中加入CheckBox全选功能

CheckBoxHeaderRenderer.as
view plain
package   
{  
      
    import flash.events.Event;  
    import flash.events.MouseEvent;        
    import mx.collections.ArrayCollection;  
    import mx.controls.Alert;  
    import mx.controls.CheckBox;  
    import mx.controls.DataGrid;  
    import mx.events.DataGridEvent;  
  
    public class CheckBoxHeaderRenderer extends CheckBox  
    {  
        private var sele:String;  
        public function CheckBoxHeaderRenderer()  
        {  
            super();  
            this.addEventListener(Event.CHANGE, clickHandlers);  
        }  
  
        override public function set data(value:Object):void  
        {  
            DataGrid(listData.owner).addEventListener  
                                    (DataGridEvent.HEADER_RELEASE,sortEventHandler);  
            thisthis.selected=this.sele=="true"?true:false;  
        }  
      
        private function sortEventHandler(event:DataGridEvent):void  
        {  
            if (event.itemRenderer == this)  
                event.preventDefault();  
        }  
          
        protected function clickHandlers(event:Event):void  
        {  
            sele=(event.currentTarget.selected).toString();  
            var a:ArrayCollection=DataGrid(listData.owner).dataProvider as ArrayCollection;  
            for(var i:int=0;i<a.length;i++){  
  
                (DataGrid(listData.owner).dataProvider as ArrayCollection)  
                                   .getItemAt(i).selected=(event.currentTarget.selected).toString();  
            }  
            (DataGrid(listData.owner).dataProvider as ArrayCollection).refresh();  
        }  
      
    }  
}    






CheckBoxItemDataRenderer.as
view plain
package   
{  
    import flash.events.Event;    
    import mx.collections.ArrayCollection;  
    import mx.controls.CheckBox;  
    import mx.controls.DataGrid;  
  
    public class CheckBoxItemDataRenderer extends CheckBox  
    {  
        private var currentData:Object; //保存当前一行值的对ˇ  
        public function CheckBoxItemDataRenderer()  
        {  
            super();          
            this.addEventListener(Event.CHANGE, changeHandler);  
        }  
        override public function set data(value:Object):void  
        {  
            this.currentData= value;  
            this.selected = value.selected == "true"?true:false;  
        }  
          
        protected function changeHandler(event : Event) : void  
        {  
            currentData.selected = this.selected.toString();  
        }  
        /*override public function get data():Object{  
            return currentData;  
        }*/  
    }  
}




  
DataGrid_Checkbox.mxml
view plain
<?xml version="1.0" encoding="utf-8"?>  
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"   
               xmlns:s="library://ns.adobe.com/flex/spark"  
               xmlns:mx="library://ns.adobe.com/flex/mx"  
               xmlns:dataGrid="*"  
               minWidth="955" minHeight="600" creationComplete="getaa()">  
    <fx:Script>  
        <![CDATA[ 
            import mx.collections.ArrayCollection; 
            import mx.controls.Alert; 
            [Bindable] 
            private var data_myDataGrid:ArrayCollection=new ArrayCollection(); 
             
            private function headerClickHandler(event : Event) : void 
            { 
            /*   
                for each(var obj: Object in data_myDataGrid) 
                { 
                    obj.selected = String(event.currentTarget.selected); 
                } 
                data_myDataGrid.refresh(); */ 
            } 
            private function getaa():void{ 
                var obj:Object=new Object(); 
                obj.labe="1"; 
                obj.data="a"; 
                obj.selected="false"; 
                var obj2:Object=new Object(); 
                obj2.labe="2"; 
                obj2.data="b"; 
                obj2.selected="false"; 
                var obj3:Object=new Object(); 
                obj3.labe="3"; 
                obj3.data="c"; 
                obj3.selected="false"; 
                var obj4:Object=new Object(); 
                obj4.labe="4"; 
                obj4.data="a"; 
                obj4.selected="false"; 
                var obj5:Object=new Object(); 
                obj5.labe="5"; 
                obj5.data="b"; 
                obj5.selected="false"; 
                var obj6:Object=new Object(); 
                obj6.labe="6"; 
                obj6.data="c"; 
                obj6.selected="false"; 
                var obj7:Object=new Object(); 
                obj7.labe="7"; 
                obj7.data="a"; 
                obj7.selected="false"; 
                var obj8:Object=new Object(); 
                obj8.labe="8"; 
                obj8.data="b"; 
                obj8.selected="false"; 
                var obj9:Object=new Object(); 
                obj9.labe="9"; 
                obj9.data="c"; 
                obj9.selected="false"; 
                data_myDataGrid.addItem(obj); 
                data_myDataGrid.addItem(obj3); 
                data_myDataGrid.addItem(obj2); 
                data_myDataGrid.addItem(obj4); 
                data_myDataGrid.addItem(obj5); 
                data_myDataGrid.addItem(obj6); 
                data_myDataGrid.addItem(obj7); 
                data_myDataGrid.addItem(obj8); 
                data_myDataGrid.addItem(obj9); 
            } 
 
            protected function button1_clickHandler(event:MouseEvent):void 
            { 
                for(var i:int=0;i<data_myDataGrid.length;i++){ 
                    if(data_myDataGrid.getItemAt(i).selected=='true'){ 
                        Alert.show(data_myDataGrid.getItemAt(i).labe); 
                    } 
                } 
            } 
 
        ]]>  
    </fx:Script>  
      
    <mx:DataGrid dataProvider="{data_myDataGrid}" x="10" y="10">  
        <mx:columns>  
            <mx:DataGridColumn dataField="labe" headerText="Label" />  
            <mx:DataGridColumn dataField="data" headerText="Data" />  
            <mx:DataGridColumn  
                dataField="selected" headerText="Select"   
                itemRenderer="CheckBoxItemDataRenderer"   
                headerRenderer="CheckBoxHeaderRenderer"  />  
        </mx:columns>  
    </mx:DataGrid>  
     <mx:Button click="button1_clickHandler(event)"/>  
</s:Application>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值