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>
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>