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> } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |