DataGrid分页[转]

来源:http://www.riachina.com/showthread.asp?page=end&threadid=5179

Flex2
环境下有点小错误,改正了一下,可行

///////////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
<mx:Script>
       
<![CDATA[
           [Bindable] 
            private var pageRecordes:Number;
             [Bindable] 
            private var totalPages:Number = 0;
             [Bindable] 
            private var totalRows:Number = 0;
             [Bindable] 
            private var currentPage:Number = 1;
             [Bindable] 
            private var pageStartRow:Number = 1;
             [Bindable] 
            private var pageEndRow:Number = 0;
           [Bindable]      
           public var initDG:Array = [
                       { Artist:"a",Price:"1", Album: "one"},
                       { Artist: "b", Price: "2", Album: "two"},
                       { Artist: "c", Price: "3", Album: "three"},
                       { Artist: "d", Price: "4", Album: "four"},
                       { Artist: "e", Price: "5", Album: "five"},
                       { Artist: "f", Price: "6", Album: "six"},
                       { Artist: "g", Price: "7", Album: "seven"},
                       { Artist: "h", Price: "8", Album: "eight"} ,];
                       
            private function initApp():void{
                       txt.text = "Page " + currentPage;
                       pageRecordes = pageConfig.pageRecordes;
                       totalRows = initDG.length;
                       if(initDG.length > pageRecordes){
                             dg.dataProvider = initDG.slice(0,pageRecordes);
                             pPage.enabled = false;
                       }
                       
                       if ((totalRows % pageRecordes) == 0) {
                             totalPages = Math.floor(totalRows / pageRecordes);
                       } else {
                             totalPages = Math.floor(totalRows / pageRecordes + 1);
                       }
                       
                       if (totalRows <= pageRecordes) {
                             this.pageStartRow = 1;
                             this.pageEndRow = totalRows;
                       } else {
                             this.pageStartRow = 1;
                             this.pageEndRow = pageRecordes;
                       }
                       
                       if(totalPages == 1){
                             pPage.enabled = false;
                             nPage.enabled = false;
                       }
                 }
           
             private function showPreviousPage():void{
                       currentPage = currentPage - 1;
                       txt.text = "Page " + currentPage;
                       if(currentPage == 1){
                             pPage.enabled = false;
                             nPage.enabled = true;
                       }else{
                             pPage.enabled = true;
                             nPage.enabled = true;
                       }
                       if (currentPage == totalPages) {
                             pageStartRow = (currentPage - 1) * pageRecordes + 1;
                             pageEndRow = totalRows;
                       } else {
                             pageStartRow = (currentPage - 1) * pageRecordes + 1;
                             pageEndRow = currentPage * pageRecordes;
                       }
                       dg.dataProvider = initDG.slice(pageStartRow - 1,pageEndRow);
                 }
                 
             private function showNextPage():void{
                       currentPage = currentPage + 1;
                       txt.text = "Page " + currentPage;
                       if(currentPage == totalPages){
                             nPage.enabled = false;
                             pPage.enabled = true;
                       }else{
                             nPage.enabled = true;
                             pPage.enabled = true;
                       }
                       if (currentPage == totalPages) {
                             pageStartRow = (currentPage - 1) * pageRecordes + 1;
                             pageEndRow = totalRows;
                       } else {
                             pageStartRow = (currentPage - 1) * pageRecordes + 1;
                             pageEndRow = currentPage * pageRecordes;
                       }
                       dg.dataProvider = initDG.slice(pageStartRow - 1,pageEndRow);
                 }
                 
       
]]>
   
</mx:Script>
     
     
<mx:Model id="pageConfig" source="WEB-INF/classes/pageConfig.xml"/>

   
<mx:Panel title="DataGrid Panel" height="100%" width="100%">

       
<mx:DataGrid id="dg" dataProvider="{initDG}" height="100%" width="100%" >
          
<mx:columns>
                     
<mx:DataGridColumn dataField="Artist" headerText="Artist"/>
                     
<mx:DataGridColumn dataField="Price" headerText="Price"/>
                     
<mx:DataGridColumn dataField="Album" headerText="Album"/>
          
</mx:columns>
       
</mx:DataGrid>
           
<mx:HBox>
                 
<mx:Button id="pPage" label="prevPage" click="showPreviousPage()"></mx:Button>
                 
<mx:Text id="txt"></mx:Text>
                 
<mx:Button id="nPage" label="nextPage" click="showNextPage()"></mx:Button>
           
</mx:HBox>

   
</mx:Panel>

</mx:Application>
posted @ 2007-03-02 10:49  fishert  阅读(289)  评论(0编辑  收藏  举报