使用方法
<PageSelector id="pageSelector"
numPagesToDisplay="5" <!--当前界面一次显示几页-->
pageSelected="kmfspx(kmfstaxis)" <!---->
borderStyle="none"
showZero="0" <!--是否显示0 及如果有100页 第一页显示为 001 -->
MaxRows="1212" <!--拥有的记录数-->
SimplePageRows="20" <!--多少条记录是一页-->
/>
查询时要用到的变量有
as 文件中 pageSelector.Startrow 当前选择页对应的数据库开始记录
pageSelector.Endrow 当前选择页对应的数据库结束记录
PageSelector.mxml 文件内容
<?xml version="1.0" encoding="utf-8"?> <!-- --> <mx:HBox xmlns:mx="http://www.macromedia.com/2003/mxml" visible="{totalPages > 0}" horizontalGap="-1" >
<mx:Script> <![CDATA[
private var __currentPage : Number = 1; private var __totalPages : Number = 0; private var repeaterStartIndex : Number = 0; private var pageStringLength : Number; private var currentButton : mx.controls.Link; public var __showZero:Number=0; private var __MaxRows: Number =0;//得到的总行数 private var __SimplePageRows: Number;//单页要有的行数
//通过页数计算开始记录数 function get Startrow():Number { return (((currentPage-1)*SimplePageRows)+1); } //返回当前页的结束记录数 function get Endrow():Number { var re:Number=0; if (currentPage != totalPages) { re = currentPage*SimplePageRows; } else if (currentPage == totalPages) { re =MaxRows; } return re; }
[ChangeEvent("MaxRowsChanged")] function get showZero() : Number { return __showZero; } function set showZero(tp : Number) : Void { __showZero=tp; mathcountpage(); }
[ChangeEvent("MaxRowsChanged")] function get MaxRows() : Number { return __MaxRows; } function set MaxRows(tp : Number) : Void { __MaxRows=tp; mathcountpage(); }
[ChangeEvent("SimplePageRowsChanged")] function get SimplePageRows() : Number { return __SimplePageRows; } function set SimplePageRows(tp : Number) : Void { __SimplePageRows=tp; mathcountpage(); } function mathcountpage() { var a:Number = __MaxRows ; var b:Number = __SimplePageRows; totalPages =(a -(a%b))/b +(((a%b)>0)?1:0); } [ChangeEvent("pageArrayChanged")] private var pageArray : Array;
public var numPagesToDisplay : Number;
[ChangeEvent("pageSelected")] function get currentPage() : Number { return __currentPage; }
function set currentPage(cp : Number) : Void { __currentPage = cp; dispatchEvent({type: 'pageSelected'}); }
[ChangeEvent("totalPagesChanged")] function get totalPages() : Number { return __totalPages; }
function set totalPages(tp : Number) : Void { __totalPages = tp; if (pageArray == null) pageArray = new Array(); if (tp > pageArray.length) { for (var i = pageArray.length+1; i <= tp; ++i) { pageArray.push(i); } } else if (tp < pageArray.length) { pageArray.splice(tp); }
pageStringLength = String(tp).length;
dispatchEvent({type: 'totalPagesChanged'}); dispatchEvent({type: 'pageArrayChanged'}); }
private function moveToBeginning() { repeaterStartIndex = 0; updateCurrentButton(undefined); }
private function moveToEnd() { var mod = totalPages % numPagesToDisplay; if (mod == 0) mod = numPagesToDisplay; repeaterStartIndex = totalPages - mod; updateCurrentButton(undefined); }
private function previousPageGroup() { if (repeaterStartIndex - numPagesToDisplay >= 0) { updateCurrentButton(undefined); repeaterStartIndex -= numPagesToDisplay; } }
private function nextPageGroup() { if (repeaterStartIndex + numPagesToDisplay < totalPages) { updateCurrentButton(undefined); repeaterStartIndex += numPagesToDisplay; } }
private function selectPage(page) : Void { currentPage = page.getRepeaterItem(); updateCurrentButton(page); }
function updateCurrentPage(newCurrentPage : Number) : Void { var butIndex = newCurrentPage % numPagesToDisplay; repeaterStartIndex = newCurrentPage - butIndex; selectPage(pageButton[butIndex]); }
private function updateCurrentButton(cb : mx.controls.Link) : Void { if (currentButton != undefined) { currentButton.setStyle("color", undefined); } if (cb != undefined) { cb.setStyle("color", 0xAA0000); } currentButton = cb; }
private function formatPageNumber(num : Number) : String { var str : String = String(num); var diff : Number = pageStringLength - str.length; if (showZero==1) switch(diff) { case 0 : return str; case 1 : return "0" + str; case 2 : return "00" + str; case 3 : return "000" + str; case 4 : return "0000" + str; case 5 : return "00000" + str; default : return str; //don't worry about it } else { return str; } }
]]> </mx:Script>
<mx:Metadata> [Event("pageSelected")] </mx:Metadata>
<mx:Link id="beginningButton" icon="@Embed('left2.jpg')" height="22" click="moveToBeginning()" enabled="{repeaterStartIndex > 0}"/>
<mx:Link id="prevPageButton" icon="@Embed('left.jpg')" height="22" click="previousPageGroup()" enabled="{repeaterStartIndex > 0}"/> <mx:Repeater id="pageRepeater" dataProvider="{pageArray}" recycleChildren="true" startingIndex="{repeaterStartIndex}" count="{numPagesToDisplay}">
<mx:Link id="pageButton" label="{formatPageNumber(pageRepeater.currentItem)}" click="selectPage(event.target)" />
</mx:Repeater> <mx:Link id="nextPageButton" icon="@Embed('right.jpg')" height="22" click="nextPageGroup()" enabled="{repeaterStartIndex + numPagesToDisplay < totalPages}"/> <mx:Link id="endButton" icon="@Embed('right2.jpg')" height="22" click="moveToEnd()" enabled="{repeaterStartIndex + numPagesToDisplay < totalPages}"/>
</mx:HBox>

|