`

Flex 分页,事件Event

    博客分类:
  • flex
阅读更多

1.Page.mxml: (公用组件)

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
   xmlns:s="library://ns.adobe.com/flex/spark"
   xmlns:mx="library://ns.adobe.com/flex/mx"
   width="400" height="300" >
 <fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->
 </fx:Declarations>
 
 <fx:Script>
  <![CDATA[
   import mx.collections.ArrayCollection;
   import mx.controls.Alert;
   
   import zw.test.page.event.PageEvent;
   [Bindable]
   public var data:ArrayCollection=new ArrayCollection();
   [Bindable]
   public var gridColumns:Array;
   [Bindable]
   public var total:int;
   [Bindable]
   public var totalPage:int;
   [Bindable]
   public var curPage:int;
   
   public var pageSize:int;
   
   //public function set pageData(data:ArrayCollection,gridColumns:Array):void{
   public function set pageData(pageData:PageData):void{//set方法必须只有一个参数
    if(data==null){
     return;
    }
    data=pageData.data;
    gridColumns=pageData.gridColumns;
    total=pageData.total;
    pageSize=pageData.pageSize;
    totalPage=Math.ceil(total/pageSize);
    curPage=pageData.curPage;
   }
   
   protected function handlePage(page:int):void{
    if(page<1||page>totalPage||total==0){
     return ;
    }
    curPage=page;
    Alert.show('当前第'+curPage+'页');
    var event:PageEvent=new PageEvent(PageEvent.pageEvent);
    event.curPage=curPage;
    event.pageSize=pageSize; 
    this.dispatchEvent(event);
   }
  ]]>
 </fx:Script>
 <s:VGroup width="100%" height="100%">
  <mx:DataGrid id="pageList" width="100%" height="100%" rowHeight="25" dataProvider="{data}" columns="{gridColumns}" />
 
  <s:HGroup width="100%" height="100%">
   <s:Label text="共{total}条记录"/>
   <s:Label text="第{curPage}页"/>
   <mx:Spacer width="100%"/>
   
   <s:Button id="firstPageBtn" toolTip="首页" click="handlePage(1)"/>
   <s:Button id="backPageBtn" toolTip="上一页" click="handlePage(curPage-1)"/>
   <s:Button id="nextPageBtn" toolTip="下一页" click="handlePage(curPage+1)"/>
   <s:Button id="lastPageBtn" toolTip="末页"  click="handlePage(totalPage)"/>
   <mx:NumericStepper id="pageVal" stepSize="1" minimum="1" height="23" maximum="{totalPage}" cornerRadius="0" value="{curPage}"/>
   <s:Button id="pageBtn" toolTip="跳转"  click="handlePage(pageVal.value)"/>
  </s:HGroup>
 </s:VGroup> 
</s:Group>

 

2.RoleList.mxml:         调用上面的Page.mxml

 

<?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"
      xmlns:page="zw.test.page.*"                                        //引入Page.mxml
      minWidth="955" minHeight="600" creationComplete="init()">
 <fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->
 </fx:Declarations>
 <s:Panel title="Panel" width="100%" height="100%">
  <s:layout>
   <s:VerticalLayout/>
  </s:layout>
  
 
  <s:Label text="分页" width="30"/>
 
  <page:Page id="rolePage" width="100%" height="100%">
   <page:gridColumns>
    <mx:DataGridColumn headerText="名称" dataField="name"/>
    <mx:DataGridColumn headerText="类型" dataField="type"/>
   </page:gridColumns>
  </page:Page>
 </s:Panel>
 <fx:Script>
  <![CDATA[
   import mx.collections.ArrayCollection;
   import mx.controls.Alert;
   
   import zw.test.page.event.PageEvent;
   import zw.test.page.vo.Role;
   private function init():void{
    var pageData:PageData=new PageData();
    
    var objArr:ArrayCollection=new ArrayCollection();
    
    var role:Role;
    role=new Role();
    role.name="wang wu";
    role.type=1;
    objArr.addItem(role);
    
    role=new Role();
    role.name="li si";
    role.type=2;
    objArr.addItem(role);
    
    pageData.data=objArr;
    pageData.total=6;
    pageData.pageSize=2;
    rolePage.pageData=pageData;
    
    //下一页按钮加Event :如何调用Page.mxml中的id="nextPageBtn"
    //nextPageBtn.addEventListener(MouseEvent.CLICK,testPage(2)); // 如何使用被包含的id
    rolePage.addEventListener(PageEvent.pageEvent,testPage);
   }
   
   public function testPage(event:PageEvent):void{
    var page:int=event.curPage;
    var pageData:PageData=new PageData();
    
    var objArr:ArrayCollection=new ArrayCollection();
    
    var role:Role;
    role=new Role();
    role.name="wang wu2";
    role.type=3;
    objArr.addItem(role);
    
    role=new Role();
    role.name="li si2";
    role.type=4;
    objArr.addItem(role);
    
    pageData.data=objArr;
    pageData.total=4;
    pageData.pageSize=2;
    pageData.curPage=2;
    rolePage.pageData=pageData;
    
    if(page==1){
     init();
    }
   }
   
  ]]>
 </fx:Script>
</s:Application>

 

3.vo:

 

package zw.test.page.vo
{
 public class Role
 {
  public var name:String; //修饰符public
  public var type:int;
  public function Role()
  {
  }
 }
}

 

4.PageData.as:       //封装分页所需的数据

 

package zw.test.page
{
 import mx.collections.ArrayCollection;

 public class PageData
 {
  public var data:ArrayCollection; //修饰符public
  public var gridColumns:Array;
  public var total:int=0;
  public var curPage:int=1;
  public var pageSize:int=20;
  public function PageData()
  {
  }
  /*
  public function set data(data:ArrayCollection):void{
   this.data=data;
  }
  public function get data():ArrayCollection{
   return data;
  }
  
  public function set gridColumns(gridColumns:Array):void{
   this.gridColumns=gridColumns;
  }
  public function get gridColumns():Array{
   return gridColumns;
  }
  */
 }
}

5.PageEvent.as:  //自定义的Event,用于分页

 

package zw.test.page.event
{
 import flash.events.Event;
 
 public class PageEvent extends Event
 {
  public static var pageEvent:String="page_event";
  public var curPage:int;
  public var pageSize:int;    //事件传值
  public function PageEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
  {
   super(type, bubbles, cancelable);
  }
 }
}

分享到:
评论

相关推荐

    Flex分页技术

    在Flex开发中,数据展示通常会涉及到大量的数据处理,如分页、排序、过滤和关键字搜索等。在Flex中,我们可以使用DataGrid组件来实现这些功能,提高用户体验并优化性能。 1. **Flex DataGrid 分页技术**: Flex ...

    flex分页控件的使用

    总之,Flex中的分页控件设计和实现涉及事件处理、数据过滤和界面交互等多个方面。通过自定义事件和组件,开发者可以根据需求创建功能丰富的分页控件,以适应不同场景下的数据展示需求。理解并熟练掌握这部分知识,...

    flex 分页控件,通过事件处理

    本篇将详细介绍如何在Flex中创建和管理分页控件,并通过事件处理来实现其功能。 首先,我们要了解Flex中的`PagingToolbar`。`PagingToolbar`是Flex中用于实现分页功能的组件,通常与数据网格(如`DataGrid`或`...

    flex分页组件

    总的来说,Flex分页组件是Flex应用中数据管理的关键组件,通过监听和响应"pageChanged"事件,可以实现高效且用户友好的数据浏览体验。理解如何配置、使用和扩展这样的组件,对于开发大型、数据密集型的Flex应用至关...

    Flex4 分页组件

    将分页组件与数据展示组件(如`List`或`DataGrid`)关联,通过监听`pageChange`事件,根据新的页码重新加载数据。 ```actionscript paginationControl.pageChange += function(event:Event):void { var current...

    flex 端实现分页的两种方法

    本篇文章将深入探讨如何在Flex端实现分页功能,主要介绍两种方法:使用Flex自带的PagingControl组件和自定义分页组件。 首先,我们来了解第一种方法——使用Flex内置的PagingControl组件。PagingControl是Flex提供...

    Flex DataGrid 分页

    Flex DataGrid 分页是Adobe Flex开发中处理大量数据的一个重要技术。在Flex应用程序中,当数据集过大,一次性加载所有数据可能导致性能下降甚至浏览器崩溃,这时就需要使用分页功能来提高用户体验。本篇文章将深入...

    flex横向条形图增加滚动条分页显示数据

    可以通过监听滚动事件,根据滚动位置加载相应部分的数据。这可能涉及到对数据源的分页处理和条形图的更新。 ```actionscript chartContainer.addEventListener(ScrollEvent.SCROLL, handleScroll); function ...

    Flex前台分页

    4. **事件监听(Event Handling)**:当用户点击分页按钮时,需要监听事件并作出响应。这通常通过添加事件监听器到分页控件来实现,然后在事件处理函数中更新数据集和视图。 5. **计算和索引(Calculations and ...

    ArcGIS API for Flex 2.0开发应用之分页查询

    ArcGIS API for Flex 2.0开发应用之分页查询 在GIS应用系统中,对GIS数据进行分页查询一直是一个亟待解决的问题。传统的WEB开发中,分页查询数据库已经是一个历史悠久的功能,但是在GIS应用系统中,这个简单的分页...

    Flex创建可编辑以及分页的DataGrid

    本篇文章将深入探讨如何在Flex中创建一个既可编辑又具有分页功能的DataGrid。 首先,我们需要导入必要的库和类。在Flex项目中,`mx.controls.DataGrid` 是核心的DataGrid类,而`mx.controls.PagingControl` 和 `mx....

    flex基于datagrid控件的增删改查及分页实现

    Flex提供了丰富的事件模型,如MouseEvent、ChangeEvent等,可以根据需要进行事件监听和响应。 七、源码和工具 在实现上述功能的过程中,可能需要借助一些开发工具,如Adobe Flex Builder或IntelliJ IDEA的Flex插件...

    flex2.0创建可编辑及分页.txt

    根据提供的标题、描述、标签和部分内容,本文将详细介绍如何利用Flex 2.0、Java、JSON与MySQL数据库结合,创建一个既支持数据编辑又能实现分页功能的DataGrid。 ### Flex 2.0 创建可编辑及分页 DataGrid #### 一、...

    flex datagrid doubleclick 实例

    在标题“flex datagrid doubleclick 实例”中,我们关注的是如何实现DataGrid组件对用户双击事件的响应。双击事件通常用于执行更复杂的操作,例如编辑选定的记录或触发一个新的视图。以下将详细介绍这一功能的实现...

    flex 线图到饼图的联动

    function onLineItemClick(event:Event):void { var selectedItem:Object = lineChart.selectedItem; // 计算并更新饼图数据源 // ... // 更新饼图数据源 pieChart.dataProvider.refresh(); } ``` 6. **...

    Flex Datagrid全选功能

    它可以动态地根据数据源调整大小,支持排序、过滤、分页等功能,是数据展示和操作的常用组件。 2. **全选功能需求**: 在许多应用中,用户可能需要一次性选择Datagrid中的所有记录,例如进行批量操作,如删除、编辑...

    flex与数据库交互

    同时,Flex提供了ArrayCollection类,可以方便地管理和操作数据集,如排序、过滤和分页。 ```actionscript ``` 这里,`lastResult`属性包含了HTTPService的响应数据,`data`是返回数据中的具体属性,`...

    自己写的 flex 的异步树和分页grid组件。

    remoteServer="true" id="asyntree1" itemClick="open(event)"&gt; 1. remoteObject 调用的java固定方法是getTree 2.返回的json [{"icon":"","nodeLable":"节点名1","id":1,"leaf":true},{"icon":"",...

    flex自定义datagrid

    本文将深入探讨如何在Flex中实现自定义的DataGrid,以支持复选框选择和分页功能。 首先,让我们了解Flex DataGrid的基本概念。DataGrid是Adobe Flex中的一个组件,用于展示结构化数据,它提供了表格形式的数据视图...

Global site tag (gtag.js) - Google Analytics