實現AdvancedDataGrid全選功能

來源:互聯網
上載者:User

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> 
本文轉自:http://www.javaeye.com/topic/417173

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.