实现AdvancedDataGrid全选功能

本文介绍了一种在AdvancedDataGrid中实现全选功能的方法,包括在左上角添加全选复选框、为每一行添加复选框,并确保只有符合条件的数据才能被选中。此外,还提供了一段具体的ActionScript代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AdvancedDataGrid功能强大,非常好用。遗憾的是AdvancedDataGrid对全选的支持不是很好。以下代码实现了AdvancedDataGrid的全选功能
1. 左上角加了一个checkBox
2. 每行加了checkBox
3. 不符合条件的不能选
4. 点击全选,选中所有符合条件的记录
抛砖引玉,希望能看到关于AdvancedDataGrid全选的更好的解决方案。

<?xml version="1.0"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">  

    <mx:Script> 
        <![CDATA[ 
            import mx.controls.Alert; 
            import mx.collections.ArrayCollection; 
             
            private var selectedColl:ArrayCollection = new ArrayCollection(); 
             
            private function init():void{ 
                this.myADG.expandAll(); 
            } 
             
            private function selectAllCbxClick(event:Event):void{ 
                if(selectAllCbx.selected){ 
                    this.selectedColl = dpFlat; 
                    this.gc.refresh(); 
                    this.myADG.expandAll(); 
                }else{ 
                    this.selectedColl = new ArrayCollection(); 
                    this.gc.refresh(); 
                    this.myADG.expandAll(); 
                } 
            } 
             
            public function hasSelected(data:Object):Boolean{ 
                var hasSelected:Boolean = false; 
                for each(var obj:Object in selectedColl){ 
                    if(data.Actual == obj.Actual && data.Estimate == obj.Estimate){ 
                        hasSelected = true; 
                        break; 
                    } 
                } 
                return hasSelected; 
            } 
                   
            [Bindable] 
            private var dpFlat:ArrayCollection = new ArrayCollection([ 
              {Region:"Southwest", Territory:"Arizona",  
                  Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},  
              {Region:"Southwest", Territory:"Arizona",  
                  Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000},   
              {Region:"Southwest", Territory:"Central California",  
                  Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000},   
              {Region:"Southwest", Territory:"Nevada",  
                  Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000},   
              {Region:"Southwest", Territory:"Northern California",  
                  Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},  
              {Region:"Southwest", Territory:"Northern California",  
                  Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000},   
              {Region:"Southwest", Territory:"Southern California",  
                  Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},  
              {Region:"Southwest", Territory:"Southern California",  
                  Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000} 
            ]); 
             
        ]]> 
    </mx:Script> 
 
    <mx:Panel title="AdvancedDataGrid Control Example" 
        height="75%" width="75%" layout="horizontal" 
        paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10"> 
        <mx:Canvas width="100%" height="100%"> 
            <mx:AdvancedDataGrid id="myADG"   
                width="100%" height="100%"   
                initialize="gc.refresh();">          
                <mx:dataProvider> 
                    <mx:GroupingCollection id="gc" source="{dpFlat}"> 
                        <mx:grouping> 
                            <mx:Grouping> 
                                <mx:GroupingField name="Region"/> 
                                <mx:GroupingField name="Territory"/> 
                            </mx:Grouping> 
                        </mx:grouping> 
                    </mx:GroupingCollection> 
                </mx:dataProvider>          
                  
                <mx:columns> 
                    <mx:AdvancedDataGridColumn> 
                        <mx:itemRenderer> 
                            <mx:Component> 
                                <mx:HBox width="100%" horizontalAlign="center"> 
                                    <mx:CheckBox selected="{data.Actual > 40000 &amp;&amp; outerDocument.hasSelected(data)}" 
                                        enabled="{data.Actual > 40000}" /> 
                                    <mx:Text text="{data.Region}"/> 
                                </mx:HBox> 
                            </mx:Component> 
                        </mx:itemRenderer> 
                    </mx:AdvancedDataGridColumn> 
                    <mx:AdvancedDataGridColumn dataField="Territory"/> 
                    <mx:AdvancedDataGridColumn dataField="Territory_Rep" 
                        headerText="Territory Rep"/> 
                    <mx:AdvancedDataGridColumn dataField="Actual"/> 
                    <mx:AdvancedDataGridColumn dataField="Estimate"/> 
                </mx:columns> 
           </mx:AdvancedDataGrid> 
           <mx:CheckBox id="selectAllCbx" toolTip="Select All" click="selectAllCbxClick(event)"/> 
       </mx:Canvas> 
    </mx:Panel> 
      
</mx:Application> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值