加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex分页2 新新的,一页多次调用互相不冲突

发布时间:2020-12-15 03:33:51 所属栏目:百科 来源:网络整理
导读:直接先上源码; 分页组件Pager.mamx ?xml version="1.0" encoding="utf-8"?mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009" ?? ??? ? xmlns:s="library://ns.adobe.com/flex/spark" creationComplete="initHandler(event)"?? ??? ? xmlns:mx="library://ns

直接先上源码;


分页组件Pager.mamx

<<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
?? ??? ? xmlns:s="library://ns.adobe.com/flex/spark" creationComplete="initHandler(event)"
?? ??? ? xmlns:mx="library://ns.adobe.com/flex/mx" width="100%" height="100%" verticalAlign="middle">
?? ?
?? ?<!--
?? ?/**
?? ?
?? ?<p>
?? ?<code>
?? ?<control:PagingBar id="serverPagingBar1" url="USER_DATAGRID" datagrid="{userAdg}" pageSize="3"
?? ?destination="userFlexServices" methodName="getUsers" height="26" width="100%" /> 
?? ?</code>
?? ?</p>
?? ?*/
?? ?-->
?? ?
?? ?<fx:Script>
?? ??? ?<![CDATA[
?? ??? ??? ?import com.gwtjs.events.PagerEvent;
?? ??? ??? ?
?? ??? ??? ?import mx.collections.ArrayCollection;
?? ??? ??? ?import mx.controls.Alert;
?? ??? ??? ?import mx.controls.DataGrid;
?? ??? ??? ?import mx.events.FlexEvent;
?? ??? ??? ?import mx.events.PropertyChangeEvent;
?? ??? ??? ?import mx.rpc.events.FaultEvent;
?? ??? ??? ?import mx.rpc.events.ResultEvent;
?? ??? ??? ?import mx.rpc.remoting.RemoteObject;
?? ??? ??? ?import mx.utils.ObjectProxy;
?? ??? ??? ?
?? ??? ??? ?import spark.events.IndexChangeEvent;
?? ??? ??? ?
?? ??? ??? ?private var pageProxy:ObjectProxy=new ObjectProxy();
?? ??? ??? ?
?? ??? ??? ?[Bindable]//每页显示的条数
?? ??? ??? ?private var pageSizeBoxListData:ArrayCollection = new ArrayCollection([
?? ??? ??? ??? ?{pageSize:10},?? ??? ??? ??? ?{pageSize:20},?? ??? ??? ??? ?{pageSize:30},?? ??? ??? ??? ?{pageSize:50},?? ??? ??? ??? ?{pageSize:100}
?? ??? ??? ?]);
?? ??? ??? ?
?? ??? ??? ?[Bindable]//每页显示的记录数
?? ??? ??? ?public var pageSize:int = 10;
?? ??? ??? ?
?? ??? ??? ?[Bindable]//当前页
?? ??? ??? ?public var curpage:int = 1;
?? ??? ??? ?
?? ??? ??? ?[Bindable]//下一页到多少记录数
?? ??? ??? ?public var _offset:int = 1;
?? ??? ??? ?
?? ??? ??? ?[Bindable]//总页数
?? ??? ??? ?public var totalPage:int = 0;
?? ??? ??? ?
?? ??? ??? ?[Bindable]//总记录数
?? ??? ??? ?private var _allRecorders:int = 0;
?? ??? ??? ?
?? ??? ??? ?[Bindable]//组件宽度
?? ??? ??? ?public var widthTo:int;
?? ??? ??? ?
?? ??? ??? ?public function get pagerProxy():ObjectProxy
?? ??? ??? ?{
?? ??? ??? ??? ?return pageProxy;
?? ??? ??? ?}

?? ??? ??? ?public function set pagerProxy(value:ObjectProxy):void
?? ??? ??? ?{
?? ??? ??? ??? ?pageProxy = value;
?? ??? ??? ?}

?? ??? ??? ?public function get offset():int
?? ??? ??? ?{
?? ??? ??? ??? ?return _offset;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?public function set offset(value:int):void
?? ??? ??? ?{
?? ??? ??? ??? ?_offset = value;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?public function get allRecorders():int
?? ??? ??? ?{
?? ??? ??? ??? ?return _allRecorders;
?? ??? ??? ?}

?? ??? ??? ?public function set allRecorders(value:int):void
?? ??? ??? ?{
?? ??? ??? ??? ?_allRecorders = value;
?? ??? ??? ?}

?? ??? ??? ?/**
?? ??? ??? ? * 
?? ??? ??? ? */
?? ??? ??? ?protected function progressBarClickHandler(event:MouseEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?var bc:HBox = HBox(event.target);
?? ??? ??? ??? ?widthTo = event.localX;
?? ??? ??? ??? ?//progressBarEffect.target = progressBarPagerBlue;
?? ??? ??? ??? ?//progressBarEffect.play();
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 
?? ??? ??? ? */
?? ??? ??? ?private function getMinimum():int
?? ??? ??? ?{
?? ??? ??? ??? ?if(allRecorders < 1)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?return 0;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?return 1;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 
?? ??? ??? ? */
?? ??? ??? ?protected function pageFirstClickHandler(event:MouseEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?curpage = getMinimum();
?? ??? ??? ??? ?getBtnEnabled();
?? ??? ??? ??? ?pagingRemoteObject();
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 上一页
?? ??? ??? ? */
?? ??? ??? ?protected function pagePrevClickHandler(event:MouseEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?var tempNum:int = getMinimum();
?? ??? ??? ??? ?curpage = curpage - 1;
?? ??? ??? ??? ?getBtnEnabled();
?? ??? ??? ??? ?pagingRemoteObject();
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 跳转到指定页
?? ??? ??? ? */
?? ??? ??? ?protected function pageStepperClickHandler(event:MouseEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?curpage = pageStepper.value;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 下一页
?? ??? ??? ? */
?? ??? ??? ?protected function pageNextClickHandler(event:MouseEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?if(curpage < totalPage)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?curpage = curpage + 1;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?getBtnEnabled();
?? ??? ??? ??? ?pagingRemoteObject();
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 最后一页
?? ??? ??? ? */
?? ??? ??? ?protected function pageLastClickHandler(event:MouseEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?curpage = totalPage;
?? ??? ??? ??? ?getBtnEnabled();
?? ??? ??? ??? ?pagingRemoteObject();
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 刷新当前页
?? ??? ??? ? */
?? ??? ??? ?protected function pageRefreshClickHandler(event:MouseEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?totalPage = getTotalPageNum();
?? ??? ??? ??? ?pagingRemoteObject();
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 初始化函数
?? ??? ??? ? */
?? ??? ??? ?protected function initHandler(event:FlexEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?pagerProxy.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE,changeMethod); 
?? ??? ??? ??? ?trace("1111",offset,pageSize,_allRecorders,allRecorders);
?? ??? ??? ??? ?
?? ??? ??? ??? ?totalPage = getTotalPageNum();getBtnEnabled();
?? ??? ??? ??? ?//pagingRemoteObject();
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?private function changeMethod(evt:PropertyChangeEvent):void { 
?? ??? ??? ??? ?if(evt.newValue){ //值有改变 
?? ??? ??? ??? ??? ?allRecorders = Number(evt.newValue);
?? ??? ??? ??? ??? ?totalPage = getTotalPageNum();getBtnEnabled();
?? ??? ??? ??? ??? ?trace("变化的属性名称:"+evt.property.toString()+"|新值:"+evt.newValue);
?? ??? ??? ??? ??? ?trace("发生更改的对象(在监听对象的时候特别有用):"+evt.source+"|旧值:"+evt.oldValue); 
?? ??? ??? ??? ?} 
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 设置每页显示多少条记录
?? ??? ??? ? */
?? ??? ??? ?protected function pageSizeComboboxChangeHandler(event:IndexChangeEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?var obj:Object = pageSizeCombobox.selectedItem;
?? ??? ??? ??? ?pageSize = obj.pageSize;
?? ??? ??? ??? ?//trace(offset,"",pageSize);
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 求总页面数
?? ??? ??? ? * //计算总页面数-->总页数=(总记录数+每页显示的记录数-1)/每页显示的记录数
?? ??? ??? ? * */
?? ??? ??? ?private function getTotalPageNum():int
?? ??? ??? ?{
?? ??? ??? ??? ?//trace('getTotalPageNum',allRecorders);
?? ??? ??? ??? ?return (_allRecorders + pageSize - 1) / pageSize;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 获取总页数
?? ??? ??? ? */
?? ??? ??? ?private function getBtnEnabled():void
?? ??? ??? ?{
?? ??? ??? ??? ?if(totalPage<=1)//所有按钮全灰掉
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?pageFirstBtn.enabled = false;
?? ??? ??? ??? ??? ?pagePrevBtn.enabled = false;
?? ??? ??? ??? ??? ?pageNextBtn.enabled = false;
?? ??? ??? ??? ??? ?pageLastBtn.enabled = false;
?? ??? ??? ??? ??? ?refrePageBtn.enabled = false;
?? ??? ??? ??? ?}else if(curpage==1){ //当前在第一页
?? ??? ??? ??? ??? ?pageFirstBtn.enabled = false;
?? ??? ??? ??? ??? ?pagePrevBtn.enabled = false;
?? ??? ??? ??? ??? ?pageNextBtn.enabled = true;
?? ??? ??? ??? ??? ?pageLastBtn.enabled = true;
?? ??? ??? ??? ??? ?refrePageBtn.enabled = true;
?? ??? ??? ??? ?}else if(curpage<totalPage && curpage > 1){ //当前在中间页数,不在第一页也不在最后一页
?? ??? ??? ??? ??? ?pageFirstBtn.enabled = true;
?? ??? ??? ??? ??? ?pagePrevBtn.enabled = true;
?? ??? ??? ??? ??? ?pageNextBtn.enabled = true;
?? ??? ??? ??? ??? ?pageLastBtn.enabled = true;
?? ??? ??? ??? ??? ?refrePageBtn.enabled = true;
?? ??? ??? ??? ?}else if(curpage==totalPage){ //当前在最后一页
?? ??? ??? ??? ??? ?pageFirstBtn.enabled = true;
?? ??? ??? ??? ??? ?pagePrevBtn.enabled = true;
?? ??? ??? ??? ??? ?pageNextBtn.enabled = false;
?? ??? ??? ??? ??? ?pageLastBtn.enabled = false;
?? ??? ??? ??? ??? ?refrePageBtn.enabled = true;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?/**如果有页数则刷新可用*/
?? ??? ??? ??? ?if(totalPage > 0)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?refrePageBtn.enabled = true;
?? ??? ??? ??? ?}else{
?? ??? ??? ??? ??? ?refrePageBtn.enabled = false;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 服务请求成功的处理
?? ??? ??? ? */
?? ??? ??? ?private function serviceSuccessResult(event:ResultEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?var results:ArrayCollection = ArrayCollection(event.result.list);
?? ??? ??? ??? ?trace("共"+_allRecorders+"条记录","每页显示",results,"n当前页",curpage);
?? ??? ??? ??? ?totalPage = getTotalPageNum();
?? ??? ??? ??? ?pageStepper.value = curpage;
?? ??? ??? ??? ?
?? ??? ??? ??? ?getBtnEnabled();
?? ??? ??? ??? ?
?? ??? ??? ??? ?//发事件到上级视图
?? ??? ??? ??? ?this.dispatchEvent(new Event("myFunction"));
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 服务请求失败的处理
?? ??? ??? ? */
?? ??? ??? ?private function httpServiceFault(event:FaultEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?var str:String = "客户端异常";
?? ??? ??? ??? ?var index:int = -1;
?? ??? ??? ??? ?var faultCode:String = event.fault.faultCode.toString();
?? ??? ??? ??? ?index = faultCode.indexOf("Server",0);
?? ??? ??? ??? ?if(index!=-1)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?str= "服务端异常";
?? ??? ??? ??? ?}
?? ??? ??? ??? ?//trace(index,str);
?? ??? ??? ??? ?
?? ??? ??? ??? ?//客户端的faultCode以Client开头,服务器端的faultCode以Server开头
?? ??? ??? ??? ?Alert.show(event.fault.toString(),faultCode);
?? ??? ??? ??? ?trace(event.fault.toString());
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 这里不发送服务请求,而是将计算后的结果返回给调用的页面,供调用的页面发送服务请求
?? ??? ??? ? */
?? ??? ??? ?private function pagingRemoteObject():void
?? ??? ??? ?{
?? ??? ??? ??? ?//var remote:RemoteObject = new RemoteObject(destination);
?? ??? ??? ??? ?//页面偏移量这里计划好了,java不需要计算了
?? ??? ??? ??? ?offset = (curpage - 1) * pageSize;
?? ??? ??? ??? ?trace("pageSize","offset",offset);
?? ??? ??? ??? ?/*remote.getOperation(methodName).send(pageSize,_offset);
?? ??? ??? ??? ?remote.addEventListener(ResultEvent.RESULT,serviceSuccessResult);
?? ??? ??? ??? ?remote.addEventListener(FaultEvent.FAULT,httpServiceFault);*/
?? ??? ??? ??? ?//这里调用上级的方法发请求,这里不发了.
?? ??? ??? ??? ?//发事件到上级视图
?? ??? ??? ??? ?var pager:Object = new Object();
?? ??? ??? ??? ?pager.offset = offset;
?? ??? ??? ??? ?pager.pageSize = pageSize;
?? ??? ??? ??? ?//发事件到上级视图
?? ??? ??? ??? ?this.dispatchEvent(new PagerEvent("myPagerEvent",pager));
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?protected function refrePageBtnClickHandler(event:MouseEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?var obj:Object = pageSizeCombobox.selectedItem;
?? ??? ??? ??? ?pageSize = obj.pageSize;
?? ??? ??? ??? ?//Alert.show("每页显示,"+pageSize.toString());
?? ??? ??? ??? ?curpage = pageStepper.value;
?? ??? ??? ??? ?getBtnEnabled();
?? ??? ??? ??? ?pagingRemoteObject();
?? ??? ??? ?}

?? ??? ??? ?private function pageHSliderChangeHandler(event:Event):void
?? ??? ??? ?{
?? ??? ??? ??? ?curpage = pageStepper.value;
?? ??? ??? ??? ?getBtnEnabled();
?? ??? ??? ??? ?pagingRemoteObject();
?? ??? ??? ?}


?? ??? ?]]>
?? ?</fx:Script>
?? ?
?? ?<fx:Declarations>
?? ??? ?<!-- 将非可视元素(例如服务、值对象)放在此处 -->
?? ?</fx:Declarations>
?? ?
?? ?<fx:Metadata>
?? ??? ?[Event(name="myPagerEvent",type="com.gwtjs.events.PagerEvent")]
?? ?</fx:Metadata>
?? ?
?? ?<mx:HBox width="30%" height="100%" verticalAlign="middle">
?? ??? ?<mx:LinkButton styleName="pageFirstBtn" id="pageFirstBtn" enabled="false" click="pageFirstClickHandler(event)" />
?? ??? ?<mx:LinkButton styleName="pagePrevBtn" id="pagePrevBtn" enabled="false" click="pagePrevClickHandler(event)" />
?? ??? ?
?? ??? ?<mx:LinkButton styleName="pageNextBtn" id="pageNextBtn" enabled="false" click="pageNextClickHandler(event)" />
?? ??? ?<mx:LinkButton styleName="pageLastBtn" id="pageLastBtn" enabled="false" click="pageLastClickHandler(event)" />
?? ??? ?
?? ??? ?<mx:HBox width="40%" height="100%" verticalAlign="middle">
?? ??? ??? ?<s:Label text="Page" />
?? ??? ??? ?<s:NumericStepper id="pageStepper" width="78" click="pageStepperClickHandler(event)"
?? ??? ??? ??? ??? ??? ??? ?? maximum="{totalPage}" minimum="{_allRecorders!=0?1:0}" value="{curpage}" />
?? ??? ??? ?<s:Label text=" Of " />
?? ??? ??? ?<s:Label id="totalPageLab" text="{totalPage}" />
?? ??? ?</mx:HBox>
?? ??? ?
?? ?</mx:HBox>
?? ?
?? ?<mx:HBox verticalAlign="middle">
?? ??? ?<s:ComboBox dataProvider="{pageSizeBoxListData}" skinClass="assets.skin.ComboBoxTextInputEditSkin" selectedIndex="1" width="60" labelField="pageSize"
?? ??? ??? ??? ??? ?id="pageSizeCombobox" change="pageSizeComboboxChangeHandler(event)" />
?? ??? ?<s:Label text=" of {_allRecorders} " />
?? ??? ?<mx:LinkButton id="refrePageBtn" click="refrePageBtnClickHandler(event)" styleName="myRrfreshBtn" />
?? ?</mx:HBox>
?? ?
?? ?<!--
?? ?<mx:LinkButton styleName="pageRefreshBtn" id="pageRefreshBtn" click="pageRefreshClickHandler(event)"/>
?? ?-->
?? ?
?? ?<mx:HBox width="100%" height="100%" click="progressBarClickHandler(event)" verticalAlign="middle">
?? ??? ?<s:HSlider width="98%" stepSize="1" dataTipPrecision="0" 
?? ??? ??? ??? ??? maximum="{totalPage}" minimum="{_allRecorders!=0?1:0}" value="{curpage}" change="pageHSliderChangeHandler(event)"/>
?? ?</mx:HBox>
?? ?
?? ?<s:BorderContainer x="0" y="0" width="40%" height="20" borderColor="0x336699" textAlign="center" visible="false">
?? ??? ?<s:Group id="hgimg" x="0" y="0" width="100%" height="100%" clipAndEnableScrolling="true">
?? ??? ??? ?<mx:HBox width="60%" height="18" styleName="progressBarPageBlue" id="progressBarPageBlue">
?? ??? ??? ??? ?
?? ??? ??? ?</mx:HBox>
?? ??? ??? ?<mx:HBox width="96%" height="100%" paddingLeft="3" x="2" horizontalAlign="center" verticalAlign="middle">
?? ??? ??? ??? ?<s:Label text="Displaying "/>
?? ??? ??? ??? ?<s:Label text="{pageSize*curpage - 1 - pageSize}" id="pageStartLab"/>
?? ??? ??? ??? ?<s:Label text="-"/>
?? ??? ??? ??? ?<s:Label text="{pageSize*curpage - 1}" id="pageSizeLab"/>
?? ??? ??? ??? ?<s:Label text="of"/>
?? ??? ??? ??? ?<s:Label text="{_allRecorders}" id="allRecordsLab"/>
?? ??? ??? ?</mx:HBox>
?? ??? ?</s:Group>
?? ?</s:BorderContainer>
?? ?
</mx:HBox>


分页组件主要负责以下任务:

1.处理按钮效果,当前第一页则第一页按钮和上页则灰掉,反之则然,等...;

2.计算分页参数,如多少页,每页显示多少条,剩下多少页...;

3.处理完参数将参数使用事件传递给主页面,供主页面调用服务时使用;



分页事件--PagerEvent.as

package com.gwtjs.events
{
	import flash.events.Event;
	
	public class PagerEvent extends Event
	{
		private var _pager:Object;
		
		public function set item(item:Object):void{
			this._pager = item;
		}
		
		public function get item():Object{
			return this._pager;
		}
		
		public function PagerEvent(type:String,obj:Object,bubbles:Boolean=false,cancelable:Boolean=false)
		{
			super(type,bubbles,cancelable);
			this._pager = obj;
		}
		
	}
}

事件主要传递分页时的参数offset和pageSize



Test.mamx

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
?? ??? ??? ??? xmlns:s="library://ns.adobe.com/flex/spark" 
?? ??? ??? ??? xmlns:mx="library://ns.adobe.com/flex/mx"
?? ??? ??? ??? creationComplete="initHandler(event)" width="99%" height="680" xmlns:components="com.gwtjs.components.*">
?? ?<s:layout>
?? ??? ?<s:BasicLayout/>
?? ?</s:layout>
?? ?
?? ?<fx:Style source="assets/styles/main.css" />
?? ?<fx:Style source="assets/styles/icons.css" />
?? ?
?? ?<fx:Script>
?? ??? ?<![CDATA[
?? ??? ??? ?import com.gwtjs.events.PagerEvent;
?? ??? ??? ?import com.gwtjs.renderer.grid.EnableItemIFactory;
?? ??? ??? ?import com.gwtjs.util.SimpleIndexUtil;
?? ??? ??? ?import com.gwtjs.window.RoleEditorWindow;
?? ??? ??? ?
?? ??? ??? ?import mx.collections.ArrayCollection;
?? ??? ??? ?import mx.controls.Alert;
?? ??? ??? ?import mx.events.CloseEvent;
?? ??? ??? ?import mx.events.FlexEvent;
?? ??? ??? ?import mx.managers.PopUpManager;
?? ??? ??? ?import mx.rpc.events.FaultEvent;
?? ??? ??? ?import mx.rpc.events.ResultEvent;
?? ??? ??? ?
?? ??? ??? ?[Bindable] 
?? ??? ??? ?[Embed("assets/images/user_edit.png")] 
?? ??? ??? ?private var userEditorIcon:Class;
?? ??? ??? ?
?? ??? ??? ?[Bindable] 
?? ??? ??? ?[Embed("assets/images/user_add.png")] 
?? ??? ??? ?private var userAddIcon:Class; 
?? ??? ??? ?
?? ??? ??? ?[Bindable] //叶子节点
?? ??? ??? ?[Embed(source="assets/images/user_delete.png")]
?? ??? ??? ?private var userDeleteIcon:Class;
?? ??? ??? ?
?? ??? ??? ?[Bindable] //定义渲染器 - 是否
?? ??? ??? ?private var enabledRender:IFactory = new EnableItemIFactory();
?? ??? ??? ?
?? ??? ??? ?[Bindable] //叶子节点
?? ??? ??? ?[Embed(source="assets/images/arrow_refresh_small.png")]
?? ??? ??? ?private var refreshBtnIcon:Class;
?? ??? ??? ?
?? ??? ??? ?[Bindable]
?? ??? ??? ?private var indexRenderer:Class = SimpleIndexUtil;
?? ??? ??? ?
?? ??? ??? ?[Bindable]
?? ??? ??? ?private var rolesArray:ArrayCollection = new ArrayCollection([
?? ??? ??? ??? ?{roleId:"10",roleName:"系统管理员",status:1,roleAuths:"",rolesAuthNames:"",roleDesc:"系统管理员,可操作其它角色,具备全部权限" },?? ??? ??? ??? ?{roleId:"20",roleName:"安全管理员",可以自提漏洞工单的需求"},?? ??? ??? ??? ?{roleId:"30",roleName:"检测负责人",检测漏洞"},?? ??? ??? ??? ?{roleId:"40",roleName:"修复负责人",roleDesc:"修复负责人,修复漏洞"}
?? ??? ??? ?]);
?? ??? ??? ?
?? ??? ??? ?private static var time:String = "2014-12-29 18:33:22";
?? ??? ??? ?import mx.formatters.DateFormatter;
?? ??? ??? ?public function compareTime(str:String):Boolean
?? ??? ??? ?{
?? ??? ??? ??? ?var myPattern1:RegExp=/-|:| /g;
?? ??? ??? ??? ?
?? ??? ??? ??? ?var dateFormatter:DateFormatter = new DateFormatter();
?? ??? ??? ??? ?dateFormatter.formatString = "YYYY-MM-DD JJ:NN:SS";
?? ??? ??? ??? ?var now:String= dateFormatter.format(new Date());
?? ??? ??? ??? ?
?? ??? ??? ??? ?str = dateFormatter.format(str);
?? ??? ??? ??? ?str = str.replace(myPattern1,'');
?? ??? ??? ??? ?
?? ??? ??? ??? ?now = now.replace(myPattern1,'');
?? ??? ??? ??? ?if(Number(str)>Number(now)){return true;}else{return false;}
?? ??? ??? ?}
?? ??? ??? ?/**
?? ??? ??? ? * 初始化函数 
?? ??? ??? ? */
?? ??? ??? ?protected function initHandler(event:FlexEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?var bool:Boolean = compareTime(time);
?? ??? ??? ??? ?if(bool){
?? ??? ??? ??? ??? ?RoleServicesController.getRoles();
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**添加角色*/
?? ??? ??? ?protected function roleAddClickHandler(event:MouseEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?var itemEditorWindow:RoleEditorWindow = new RoleEditorWindow();
?? ??? ??? ??? ?PopUpManager.addPopUp(itemEditorWindow,this,true);
?? ??? ??? ??? ?PopUpManager.centerPopUp(itemEditorWindow);
?? ??? ??? ??? ?//传值过去;
?? ??? ??? ??? ?itemEditorWindow.title = "新增角色条目";
?? ??? ??? ??? ?itemEditorWindow.action = "Insert";
?? ??? ??? ??? ?itemEditorWindow.items = rolesArray;
?? ??? ??? ??? ?itemEditorWindow.arrIndex = 3;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 修改角色
?? ??? ??? ? * */
?? ??? ??? ?protected function roleEditorClickHandler(event:MouseEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?var index:int = rolesArrayGrid.selectedIndex;
?? ??? ??? ??? ?
?? ??? ??? ??? ?var item:Object = rolesArray.getItemAt(index);
?? ??? ??? ??? ?var itemEditorWindow:RoleEditorWindow = new RoleEditorWindow();
?? ??? ??? ??? ?PopUpManager.addPopUp(itemEditorWindow,true);
?? ??? ??? ??? ?PopUpManager.centerPopUp(itemEditorWindow);
?? ??? ??? ??? ?//传值过去;
?? ??? ??? ??? ?itemEditorWindow.title = "修改角色条目";
?? ??? ??? ??? ?itemEditorWindow.action = "Update";
?? ??? ??? ??? ?itemEditorWindow.items = rolesArray;
?? ??? ??? ??? ?itemEditorWindow.item = item;
?? ??? ??? ??? ?itemEditorWindow.arrIndex = 0;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 删除角色
?? ??? ??? ? * */
?? ??? ??? ?protected function roleRemoveClickHandler(event:MouseEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?var item:Object = rolesArrayGrid.selectedItem;
?? ??? ??? ??? ?Alert.show("确定要删除角色:"+item.roleName+"?","信息提示",(1|2),function(event:CloseEvent):void{
?? ??? ??? ??? ??? ?if(event.detail == Alert.YES){
?? ??? ??? ??? ??? ??? ?for(var i:int=0;i<rolesArray.length;i++){
?? ??? ??? ??? ??? ??? ??? ?if(item.roleId==rolesArray[i].roleId){
?? ??? ??? ??? ??? ??? ??? ??? ?rolesArray.removeItemAt(i);
?? ??? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?});
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 请求异常
?? ??? ??? ? * 客户端的faultCode以Client开头,服务器端的faultCode以Server开头
?? ??? ??? ? * */
?? ??? ??? ?private function httpServiceFault(event:FaultEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?var str:String = "客户端异常";
?? ??? ??? ??? ?var index:int = -1;
?? ??? ??? ??? ?var faultCode:String = event.fault.faultCode.toString();
?? ??? ??? ??? ?index = faultCode.indexOf("Server",faultCode);
?? ??? ??? ??? ?trace(event.fault.toString());
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?[Bindable]
?? ??? ??? ?private var endpoint:String = "http://127.0.0.1:8080/buganalysis";
?? ??? ??? ?override protected function createChildren():void {
?? ??? ??? ??? ?if(ExternalInterface.available){
?? ??? ??? ??? ??? ?var pt:String = ExternalInterface.call("getEndopint");
?? ??? ??? ??? ??? ?trace("endpoint",pt,22222222222222);
?? ??? ??? ??? ??? ?if(pt!=null)
?? ??? ??? ??? ??? ??? ?endpoint = pt;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?super.createChildren();
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 成功处理
?? ??? ??? ? * */
?? ??? ??? ?private function getRolesResultHandler(event:ResultEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?rolesArray = ArrayCollection(event.result.userRoles);
?? ??? ??? ??? ?allRecorders = Number(event.result.allRecorders);
?? ??? ??? ??? ?//初始化分页中的总记录数
?? ??? ??? ??? ?serverPagingBar1.pagerProxy.allRecorders = allRecorders;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?[Bindable]
?? ??? ??? ?public var offset:int=0;
?? ??? ??? ?[Bindable]
?? ??? ??? ?public var pageSize:int=20;
?? ??? ??? ?[Bindable]
?? ??? ??? ?public var allRecorders:int = 0;
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * 当分页组件中的分页按钮点击时就会触发此函数
?? ??? ??? ? * */
?? ??? ??? ?public function myPagerEventHandler(event:PagerEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?var obj:Object = event.item;
?? ??? ??? ??? ?var bool:Boolean = compareTime(time);
?? ??? ??? ??? ?trace("obj.offset",obj.offset,"obj.pageSize",obj.pageSize);
?? ??? ??? ??? ?if(obj!=null){
?? ??? ??? ??? ??? ?offset = obj.offset;
?? ??? ??? ??? ??? ?pageSize = obj.pageSize;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?if(bool){ 
?? ??? ??? ??? ??? ?RoleServicesController.getRoles();
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ?]]>
?? ?</fx:Script>
?? ?
?? ?<fx:Declarations>
?? ??? ?<!-- 将非可视元素(例如服务、值对象)放在此处 -->
?? ??? ?<s:RemoteObject id="RoleServicesController" destination="RoleServicesController" fault="httpServiceFault(event)"
?? ??? ??? ??? ??? ??? ?endpoint="{endpoint}/messagebroker/amf">
?? ??? ??? ?<s:method name="getRoles" result="getRolesResultHandler(event)">
?? ??? ??? ??? ?<s:arguments>
?? ??? ??? ??? ??? ?<offset>{offset}</offset>
?? ??? ??? ??? ??? ?<pageSize>{pageSize}</pageSize>
?? ??? ??? ??? ?</s:arguments>
?? ??? ??? ?</s:method>
?? ??? ?</s:RemoteObject>
?? ?</fx:Declarations>
?? ?
?? ?<mx:VBox width="100%" height="100%" verticalGap="0">
?? ??? ?
?? ??? ?<mx:HBox width="100%" height="32" horizontalAlign="left" styleName="panelTitleBg"
?? ??? ??? ??? ? verticalAlign="middle" horizontalGap="0">
?? ??? ??? ?<mx:LinkButton icon="@Embed(source='assets/images/icons/grid.png')" color="#FFFFFF" fontWeight="bold" label="角色管理" />
?? ??? ?</mx:HBox>
?? ??? ?
?? ??? ?<mx:VBox width="100%" height="100%" id="gridMainLayout" verticalGap="6" horizontalAlign="center" horizontalGap="6" paddingLeft="6" paddingRight="6" paddingBottom="6" paddingTop="6" >
?? ??? ??? ?
?? ??? ??? ?<mx:HBox width="100%" height="6" verticalAlign="middle" borderColor="#696969" backgroundColor="#E6E0E0" cornerRadius="6" visible="false" >
?? ??? ??? ??? ?<mx:LinkButton label="新增角色" icon="{userAddIcon}" styleName="btnWeight" click="roleAddClickHandler(event)" />
?? ??? ??? ??? ?<mx:LinkButton label="修改角色" icon="{userEditorIcon}" styleName="btnWeight" click="roleEditorClickHandler(event)" />
?? ??? ??? ??? ?<mx:LinkButton label="删除角色" icon="{userDeleteIcon}" styleName="btnWeight" click="roleRemoveClickHandler(event)" />
?? ??? ??? ??? ?<mx:HBox width="100%" />
?? ??? ??? ??? ?<mx:LinkButton label="刷新" icon="{refreshBtnIcon}" />
?? ??? ??? ?</mx:HBox>
?? ??? ??? ?
?? ??? ??? ?<mx:DataGrid id="rolesArrayGrid" headerStyleName="myHead" dataProvider="{rolesArray}" 
?? ??? ??? ??? ??? ??? ? rowCount="{rolesArray.length}" textAlign="center" width="100%" height="80%"
?? ??? ??? ??? ??? ??? ? verticalGridLineColor="#CCCCCC" horizontalGridLines="true" horizontalGridLineColor="#CCCCCC">
?? ??? ??? ??? ?<mx:columns>
?? ??? ??? ??? ??? ?<mx:DataGridColumn headerText="序号" itemRenderer="{new ClassFactory(indexRenderer)}" width="50" />
?? ??? ??? ??? ??? ?<mx:DataGridColumn headerText="角色名称" dataField="roleName" textAlign="left" width="160" />
?? ??? ??? ??? ??? ?<mx:DataGridColumn headerText="状态" dataField="status" textAlign="center" width="80" itemRenderer="{enabledRender}" />
?? ??? ??? ??? ??? ?<mx:DataGridColumn headerText="角色权限" dataField="rolesAuthNames" textAlign="left" width="180"/>
?? ??? ??? ??? ??? ?<mx:DataGridColumn headerText="角色说明" dataField="roleDesc" textAlign="left" />
?? ??? ??? ??? ?</mx:columns>
?? ??? ??? ?</mx:DataGrid>
?? ??? ??? ?<components:Pager id="serverPagingBar1"
?? ??? ??? ??? ??? ??? ??? ?? myPagerEvent="myPagerEventHandler(event)"
?? ??? ??? ??? ??? ??? ??? ?? offset="{offset}" pageSize="{pageSize}" allRecorders="{allRecorders}"
?? ??? ??? ??? ??? ??? ??? ?? height="26" width="100%" />
?? ??? ?</mx:VBox>
?? ?</mx:VBox>
?? ?
</s:Application>


处理流程:

1.调用分页组件

<components:Pager id="serverPagingBar1" url="USER_DATAGRID" datagrid="{userDataGrid}" 
							  myPagerEvent="userDataGridPagerEventHandler(event)"
							  myFunction="serverPagingBarFunctionHandler(event)" offset="{offset}" pageSize="{pageSize}"
							  destination="userFlexServices" methodName="getUsers" height="26" width="100%" />

这里传入初始分页参数offset页偏移量,pageSize每页大小,myPagerEvent为分页处理事件,组件处理完分页参数后就分发事件,主页面可以执行此分页函数请求服务;



请求服务处理完成功后,再次将offset和pageSize传入Pager组件,但总记录数为动态变量,是请求数据后才有的,有点延迟,所以在pager组件里添加了二次处理方法;


/**
             * 成功处理
             * */
            private function getRolesResultHandler(event:ResultEvent):void
            {
                rolesArray = ArrayCollection(event.result.userRoles);
                allRecorders = Number(event.result.allRecorders);
                <strong>//初始化分页中的总记录数
                <span style="color:#ff0000;">serverPagingBar1.pagerProxy.allRecorders = allRecorders;</span>
</strong>            }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读