DataGrid分页显示 pageList

excutClass类
1 package
2 {
3 import mx.collections.ArrayCollection;
4 import mx.managers.CursorManager;
5 import mx.rpc.AbstractOperation;
6 import mx.rpc.events.FaultEvent;
7 import mx.rpc.events.ResultEvent;
8 import mx.rpc.soap.WebService;
9 public class ExecuteClass
10 {
11 public function ExecuteClass()
12 {
13 }
14
15 public function ExecuteQuery(serviceurl:String,Complete:Function,Fault:Function,sql:String,startIndex:int,ResultNum:int):void
16 {
17 var ob:Object=new Object();
18 ob.sql=sql;
19 ob.startidx=startIndex;
20 ob.recordNum=ResultNum;
21 Service(serviceurl,"ExecuteQuery",ob,OnComplete,OnFault);
22 function OnComplete(ev:ResultEvent):void
23 {
24 var result:Object=ev.result;
25 if(result)
26 {
27 var ret:Object=new Object();
28 ret.FieldName=result.FieldName;
29 ret.RecordCount=result.recordNum;
30 if(result.value)
31 {
32 var tempValue:ArrayCollection=result.value;
33 var tempLen:int=tempValue.length;
34 //ret.value=result.value;
35 var tempArray:ArrayCollection=new ArrayCollection();
36 for(var x:int=0;x<tempLen;x++)
37 {
38 var arr:ArrayCollection=result.value[x].Field;
39 var tempob:Object=new Object();
40 for(var y:int=0;y<arr.length;y++)
41 {
42 tempob[result.FieldName[y]]=result.value[x].Field[y];
43 }
44 tempArray.addItem(tempob);
45 }
46 ret.data=tempArray;
47 }
48 Complete(ret);
49 }
50 }
51 function OnFault(ev:FaultEvent):void
52 {
53 Fault(ev);
54 }
55 }
56 public function ExecuteNonQuery(serviceurl:String,Complete:Function,Fault:Function,sql:String,split:String=""):void
57 {
58 var ob:Object=new Object();
59 ob.sql=sql;
60 ob.split=split;
61 Service(serviceurl,"ExecuteNonQuery",ob,OnComplete,OnFault);
62 function OnComplete(ev:ResultEvent):void
63 {
64 var result:Object=ev.result;
65 if(result)
66 {
67 if(result=="Success")
68 {
69 Complete(ev.result);
70 }
71 else
72 {
73 Complete(result.toString());
74 }
75 }
76 else
77 {
78 Complete("Error");
79 }
80 }
81 function OnFault(ev:FaultEvent):void
82 {
83 Fault(ev);
84 }
85 }
86 public function Service(serviceurl:String,FunctionName:String,arg:Object,Complete:Function,Fault:Function):void
87 {
88 mx.managers.CursorManager.setBusyCursor();
89 var webSer:WebService=new WebService();
90 webSer.wsdl=serviceurl;
91 webSer.useProxy=false;
92 webSer.loadWSDL();
93 var op:AbstractOperation=webSer.getOperation(FunctionName);
94 op.arguments=arg;
95 op.addEventListener(ResultEvent.RESULT, OnRequestServiceComplete);
96 op.addEventListener(FaultEvent.FAULT, OnRequestServiceFault);
97 op.send();
98 function OnRequestServiceComplete(ev:ResultEvent):void
99 {
100 mx.managers.CursorManager.removeBusyCursor();
101 Complete(ev);
102 }
103 function OnRequestServiceFault(ev:FaultEvent):void
104 {
105 mx.managers.CursorManager.removeBusyCursor();
106 Fault(ev);
107 }
108 }
109 }
110 }
pagelist组件
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center" fontSize="12" width="100%" height="100%">
<mx:DataGrid id="dg" width="90%"/>
<mx:HBox width="90%" height="30">
<mx:Label text="共"/>
<mx:Label id="countsData" text="{this._recordCont}"/>
<mx:Label text="条记录"/>
<mx:Label text="当前第"/>
<mx:Label id="currentNum" text="{this._currentPage}"/>
<mx:Label text="页/共"/>
<mx:Label id="totalsNum" text="{this._pageCounts}"/>
<mx:Label text="页"/>
<mx:LinkButton id="f" label="首页" click="queryFirst()" textDecoration="underline" fontWeight="normal"/>
<mx:Spacer width="5"/>
<mx:LinkButton id="l" label="上一页" click="queryUp()" textDecoration="underline" fontWeight="normal"/>
<mx:Spacer width="5"/>

<mx:LinkButton id="n" label="下一页" click="queryNext()" textDecoration="underline" fontWeight="normal"/>
<mx:Spacer width="5"/>
<mx:LinkButton id="e" label="末页" click="queryLast()" textDecoration="underline" fontWeight="normal"/>
</mx:HBox>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.dataGridClasses.DataGridColumn;
//----------------属性-----------------------------------
//总页数
[Bindable]
private var _pageCounts:Number=0;
//当前页数
[Bindable]
private var _currentPage:Number=0;
//每页显示记录数
[Bindable]
private var _pagesize:Number=7;
//记录数
[Bindable]
private var _recordCont:Number=0;
//dataGrid 列数
[Bindable]
private var _colNum:Number=3;
//-------------------
[Bindable]
private var _columnHead:Array=new Array("用户名","密码","单位");
//--------------------
[Bindable]
private var _columnFile:Array=new Array("用户名","密码","单位");

[Bindable]
public var dataSource:ArrayCollection=new ArrayCollection();


public var startN:Number=0;
public var endN:Number=0;
//*******************************
public function set pageCounts(value:Number):void
{
_pageCounts=value;
}
public function get pageCounts():Number
{
return _pageCounts;
}
//************************************
public function set currentPage(value:Number):void
{
_currentPage=value;
}
public function get currentPage():Number
{
return _currentPage;
}
//***************************************
public function set pagesize(value:Number):void
{
_pagesize=value;
}
public function get pagesize():Number
{
return _pagesize;
}
//****************************************
public function set recordCont(value:Number):void
{
_recordCont=value;
}
public function get recordCont():Number
{
return _recordCont;
}
//****************************************
public function set colNum(value:Number):void
{
_colNum=value;
}
public function get colNum():Number
{
return _colNum;
}
//********************************************
public function set columnHead(value:Array):void
{
_columnHead=value;
}
public function get columnHead():Array
{
return _columnHead;
}
//*******************************************
public function set columnFile(value:Array):void
{
_columnFile=value;
}
public function get columnFile():Array
{
return _columnFile;
}
//*******************************************

//----------------方法-----------------------------------------
public function initSet():void
{
for(var i:Number=0;i<_colNum;i++)
{
var column:DataGridColumn= new DataGridColumn();
column.headerText =_columnHead[i];
column.dataField=_columnFile[i];
dg.columns = dg.columns.concat(column);
l.enabled=false;
n.enabled=false;
f.enabled=false;
e.enabled=false;
}
}

public function bindData(arr:ArrayCollection):void
{
l.enabled=false;
n.enabled=true;
f.enabled=true;
e.enabled=true;
_recordCont=arr.length;
endN=_pagesize;
if(endN>=_recordCont)
{
endN=_recordCont;
n.enabled=false;
}
_pageCounts=Number(int(_recordCont/_pagesize))+1;
_currentPage=1;
dg.dataProvider=additem(arr,startN,endN);
}

private function additem(arr:ArrayCollection,startN:Number,endN:Number):ArrayCollection
{
var result:ArrayCollection=new ArrayCollection();
for(var i:Number=startN;i<endN;i++)
{
result.addItem(arr.getItemAt(i));
}
return result;
}
private function queryFirst():void
{
if(dataSource)
{
startN=0;
endN=_pagesize;
if(endN>=_recordCont)
endN=_recordCont;
else
n.enabled=true;
l.enabled=false;
_currentPage=1;
dg.dataProvider=additem(dataSource,startN,endN);
}
}


private function queryUp():void
{
if(dataSource)
{
l.enabled=true;
n.enabled=true;
startN=startN-_pagesize;
endN=startN+_pagesize;
if(endN>=_recordCont)
endN=_recordCont;
_currentPage=_currentPage-1;
if(_currentPage==1)
l.enabled=false;
dg.dataProvider=additem(dataSource,startN,endN);
}
}


private function queryNext():void
{
if(dataSource)
{
l.enabled=true;
n.enabled=true;
startN=startN+_pagesize;
endN=endN+_pagesize;
if(endN>=_recordCont)
{
endN=_recordCont;
n.enabled=false;
}
_currentPage=_currentPage+1;
dg.dataProvider=additem(dataSource,startN,endN);
}
}


private function queryLast():void
{
if(dataSource)
{
l.enabled=true;
n.enabled=false;
_currentPage=_pageCounts;
startN=(_currentPage-1)*_pagesize;
endN=_recordCont;
if(_currentPage==1)
l.enabled=false;
dg.dataProvider=additem(dataSource,startN,endN);
}
}
]]>
</mx:Script>
</mx:VBox>
测试文件
1 <?xml version="1.0" encoding="utf-8"?>
2  <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*" creationComplete="init()">
3 <local:pageList id="pl" width="600" height="400"/>
4 <mx:Button label="search" click="dosearch()"/>
5 <mx:Script>
6 <![CDATA[
7 import mx.controls.Alert;
8 private var exc:ExecuteClass=new ExecuteClass();
9 private function init():void
10 {
11 pl.pagesize=6; //每页显示记录数
12 //--------此处设置dataGrid的显示列数并绑定字段-------------//
13 pl.colNum=4;
14 pl.columnHead=new Array("用户名","密码","单位","地址");
15 pl.columnFile=new Array("用户名","密码","单位","地址");
16 //---------------------------------------------------//
17 pl.initSet(); //必须调用以设置组件参数
18 }
19
20 private function dosearch():void
21 {
22 var sql:String="select s.* from (select rowNum ,重要目标编码 as 用户名 ,分类 as 密码 ,分级 as 单位 ,单位 as 地址 from 重要经济目标分布) s";
23 exc.ExecuteQuery("http://10.1.161.186/QueryService/service.asmx?WSDL",result,fault,sql,0,-1)
24 function result(ob:Object):void
25 {
26 if(ob.data)//此处将调用服务,将结果绑定给自定义组件,一切over了。
27 {
28 pl.dataSource=ob.data;
29 pl.bindData(ob.data);
30 }
31 }
32
33 function fault(ev:Event):void
34 {
35 Alert.show("获取数据失败");
36 }
37 }
38 ]]>
39 </mx:Script>
40  </mx:Application>
41  
Right! is "Fuck GIS",but don't think too much; It means reach a high during playing GIS. Come on!
原文地址:https://www.cnblogs.com/jsbrml/p/1912745.html