<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" layout="absolute" creationComplete="initApp()">
 <mx:Script>
  <![CDATA[
   public var pageRecordes:uint = 8;
   public var totalPages:uint = 0;
   public var totalRows:uint = 0;
   public var currentPage:uint = 1;
   public var pageStartRow:uint = 1;
   public var pageEndRow:uint = 0;
   
   public function initApp():void{
     txt.text = "Page " + currentPage;
     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;
     }    
   }
   
   public 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);
   }
   
   public 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((currentPage - 1) * pageRecordes,pageEndRow);
   }
   
   public function showFirstPage():void{
     dg.dataProvider = initDG.slice(0,pageRecordes);
     pPage.enabled = false;
     nPage.enabled = true;
     txt.text = "Page " + 1;
     currentPage = 1;
   }
   
   public function showLastPage():void{
     dg.dataProvider = initDG.slice((totalPages - 1) * pageRecordes,totalRows);
     pPage.enabled = true;
     nPage.enabled = false;
     txt.text = "Page " + totalPages;
     currentPage = totalPages;
   }
  ]]>
 </mx:Script>
 <mx:Panel title="DataGrid Panel" height="287" width="500">
  <mx:DataGrid id="dg" height="100%" width="100%">
    <mx:dataProvider>
                    <mx:Array id="initDG">
                        <mx:Object PLAYER="Rafer Alston" POS="G" FROM="Fresno State"/>
                        <mx:Object PLAYER="Luther Head" POS="G" FROM="lllinois"/>
                        <mx:Object PLAYER="Tracy McGrady" POS="F-G" FROM="Mount Zion Christian Acad. HS (NC)"/>
                        <mx:Object PLAYER="Dikembe Mutombo" POS="C" FROM="Georgetown"/>
                        <mx:Object PLAYER="Stromile Swift" POS="F" FROM="Louisiana State"/>
                        <mx:Object PLAYER="David Wesley" POS="G" FROM="Baylor"/>
                        <mx:Object PLAYER="Yao Ming" POS="C" FROM="China"/>
                        <mx:Object PLAYER="Kobe Bryant" POS="G" FROM="Lower Merion HS (PA)"/>
                        <mx:Object PLAYER="Kwame Brown" POS="F-C" FROM="Glynn Academy HS (GA)"/>
                        <mx:Object PLAYER="Lamar Odom" POS="F" FROM="Rhode Island"/>
                        <mx:Object PLAYER="Andrew Bynum" POS="C" FROM="St. Joseph HS (NJ)"/>
                        <mx:Object PLAYER="Brian Cook" POS="F" FROM="Illinois"/>
                        <mx:Object PLAYER="Devean George" POS="F" FROM="Augsburg"/>
                        <mx:Object PLAYER="Devin Green" POS="G" FROM="Hampton"/>
                        <mx:Object PLAYER="Aaron McKie" POS="F" FROM="Temple"/>
                        <mx:Object PLAYER="Chris Mihm" POS="C" FROM="Texas"/>
                        <mx:Object PLAYER="Smush Parker" POS="G" FROM="Fordham"/>
                        <mx:Object PLAYER="Ronny Turiaf" POS="F" FROM="Gonzaga"/>
                        <mx:Object PLAYER="Sasha Vujacic" POS="F" FROM="Slovenia"/>
                        <mx:Object PLAYER="Von Wafer" POS="F" FROM="Florida State"/>
                        <mx:Object PLAYER="Luke Walton" POS="F" FROM="Arizona"/>
                        <mx:Object PLAYER="Lamar Odom" POS="F" FROM="Rhode Island"/>
                        <mx:Object PLAYER="Jim Jackson" POS="F-G" FROM="Ohio State"/>
                    </mx:Array>
             </mx:dataProvider>
  </mx:DataGrid>
  <mx:Spacer />
  <mx:HBox width="391">
   <mx:Spacer />
   <mx:LinkBar borderStyle="solid" color="#000000" backgroundColor="#CCFFFF" id="fPage" label="firstPage" itemClick="showFirstPage()">
    <mx:dataProvider>
              <mx:Array>
                  <mx:String>firstPage</mx:String>
              </mx:Array>
          </mx:dataProvider>
   </mx:LinkBar>
   <mx:LinkBar borderStyle="solid" color="#000000" backgroundColor="#CCFFFF" id="pPage" label="prevPage" itemClick="showPreviousPage()">
    <mx:dataProvider>
              <mx:Array>
                  <mx:String>prePage</mx:String>
              </mx:Array>
          </mx:dataProvider>
   </mx:LinkBar>
   <mx:Text id="txt" width="52"/>
   <mx:LinkBar borderStyle="solid" color="#000000" backgroundColor="#CCFFFF" id="nPage" label="nextPage" itemClick="showNextPage()">
    <mx:dataProvider>
              <mx:Array>
                  <mx:String>nextPage</mx:String>
              </mx:Array>
          </mx:dataProvider>
   </mx:LinkBar>
   <mx:LinkBar borderStyle="solid" color="#000000" backgroundColor="#CCFFFF" id="lPage" label="lastPage" itemClick="showLastPage()">
    <mx:dataProvider>
              <mx:Array>
                  <mx:String>lastPage</mx:String>
              </mx:Array>
          </mx:dataProvider>
   </mx:LinkBar>
  </mx:HBox>
  <mx:Spacer />
 </mx:Panel>
</mx:Application>