要想了解Flex 4 List控件的分页功能(paging)的实现,必须先理解Flex 4中滚动机制的实现原理,可以参考我上次介绍的Flex 4中的Scrolling和viewports机制这篇文章。下面从Spike 的代码开始介绍List控件分页功能(paging)的实现:
<?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:local="*" creationComplete="init()"
height="100%" width="100%">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
[Bindable] public var totalPages:Number;
[Bindable] public var currentPage:Number = 1;
[Embed(source='assets/backpack.jpg')]
[Bindable]
public var backpackCls:Class;
[Embed(source='assets/boots.jpg')]
[Bindable]
public var bootsCls:Class;
[Embed(source='assets/compass.jpg')]
[Bindable]
public var compassCls:Class;
[Embed(source='assets/goggles.jpg')]
[Bindable]
public var gogglesCls:Class;
[Embed(source='assets/helmet.jpg')]
[Bindable]
public var helmetCls:Class;
public function prevPageHandler():void {
if(currentPage == 1) return ;
currentPage--;
//上一页
list.scroller.verticalScrollBar.changeValueByPage(false);
}
public function nextPageHandler():void {
if(currentPage == totalPages) return;
currentPage++;
//下一页
list.scroller.verticalScrollBar.changeValueByPage(true);
}
//设置list控件的滚动控件的样式
public function init():void {
//关掉滚动控件的垂直和水平滚动条
list.scroller.setStyle('horizontalScrollPolicy', 'off');
list.scroller.setStyle('verticalScrollPolicy', 'off');
//设置滚动控件的垂直滚动条的滚动样式
list.scroller.verticalScrollBar.setStyle('smoothScrolling', true);//设置为平滑滚动
list.scroller.verticalScrollBar.setStyle('repeatInterval', 500);//设置滚动到指定点的经过的时间
totalPages = Math.ceil(list.scroller.viewport.contentHeight/list.scroller.verticalScrollBar.pageSize);
}
]]>
</fx:Script>
<s:VGroup x="10" y="5" height="100%" width="100%">
<s:Label text="Page {currentPage} of {totalPages}"/>
<s:HGroup>
<s:VGroup>
<s:Button id="prev" label="Prev" click="prevPageHandler()"/>
<s:Button id="next" label="Next" click="nextPageHandler()"/>
</s:VGroup>
<s:List id="list" width="400" height="362">
<s:dataProvider>
<s:ArrayCollection>
<fx:Object name="Backpack" photo="{backpackCls}"/>
<fx:Object name="Boots" photo="{bootsCls}"/>
<fx:Object name="Compass" photo="{compassCls}"/>
<fx:Object name="Goggles" photo="{gogglesCls}"/>
<fx:Object name="Helmet" photo="{helmetCls}"/>
<fx:Object name="Backpack" photo="{backpackCls}"/>
<fx:Object name="Boots" photo="{bootsCls}"/>
<fx:Object name="Compass" photo="{compassCls}"/>
<fx:Object name="Goggles" photo="{gogglesCls}"/>
<fx:Object name="Backpack" photo="{backpackCls}"/>
<fx:Object name="Boots" photo="{bootsCls}"/>
<fx:Object name="Compass" photo="{compassCls}"/>
<fx:Object name="Goggles" photo="{gogglesCls}"/>
<fx:Object name="Helmet" photo="{helmetCls}"/>
<fx:Object name="Backpack" photo="{backpackCls}"/>
<fx:Object name="Boots" photo="{bootsCls}"/>
<fx:Object name="Compass" photo="{compassCls}"/>
<fx:Object name="Goggles" photo="{gogglesCls}"/>
<fx:Object name="Helmet" photo="{helmetCls}"/>
<fx:Object name="Compass" photo="{compassCls}"/>
<fx:Object name="Goggles" photo="{gogglesCls}"/>
<fx:Object name="Helmet" photo="{helmetCls}"/>
<fx:Object name="Compass" photo="{compassCls}"/>
<fx:Object name="Goggles" photo="{gogglesCls}"/>
<fx:Object name="Helmet" photo="{helmetCls}"/>
<fx:Object name="Compass" photo="{compassCls}"/>
<fx:Object name="Goggles" photo="{gogglesCls}"/>
<fx:Object name="Backpack" photo="{backpackCls}"/>
<fx:Object name="Boots" photo="{bootsCls}"/>
<fx:Object name="Compass" photo="{compassCls}"/>
</s:ArrayCollection>
</s:dataProvider>
<s:layout>
<s:TileLayout horizontalGap="0" verticalGap="0" requestedColumnCount="3"
columnWidth="120" rowHeight="120"/>
</s:layout>
<s:itemRenderer>
<fx:Component>
<local:PictureItemRenderer />
</fx:Component>
</s:itemRenderer>
</s:List>
</s:HGroup>
</s:VGroup>
</s:Application>
Flex 4中List控件在皮肤中定义了Scroller控件,Scroller 组件显示一个称为视域的单个可滚动组件,以及水平滚动条和垂直滚动条。在上面代码中通过设置List的scroller的 horizontalScrollPolicy和verticalScrollPolicy样式,关掉了scroller的水平和垂直滚动条。最后通过 scroller的verticalScrollerBar的changeValueByPage()方法来控制显示下一页或上一页。这里将List控件的高度设为362,而不是刚好显示三行图片的高度360。至于为什么要高两个像素,目前还没有完全弄清楚,也许是边框或间隔什么的占的空间。总页数是通过 scroller中的内容高度除以scroller的垂直页面大小(高度)计算出来的,这样就基本实现了List的分页功能。
分享到:
相关推荐
4. **数据绑定**:Flex支持数据绑定,这意味着分页控件的状态可以与数据模型进行同步。通过双向数据绑定,当数据源发生变化时,分页控件可以自动更新。 5. **皮肤化**:Flex的强项之一是其强大的皮肤化能力。自定义...
Flex + BlazeDS + Java 后台分页的实现是一个关键的技术环节,特别是在开发大型Web应用程序时,为了提高用户体验和系统性能,数据通常需要通过分页的方式进行加载。本方案主要探讨了如何在Flex前端和BlazeDS中间件与...
在Flex4.6开发环境中,DataGrid控件是用于展示数据集合的重要组件,它提供了丰富的功能,如排序、分页和自定义列显示。在这个项目中,我们关注的是如何实现DataGrid的行编辑功能,特别是在行中嵌套ComboBox控件以...
在Flex中,可以使用`mx.controls.Pagination`类或者自定义分页组件来实现高级功能,例如动态加载数据、显示页码选择器等。同时,还可以利用`mx.rpc.events.ResultEvent`和`mx.rpc.events.FaultEvent`处理服务端数据...
在Flex4.x中,构建一个可编辑的List组件并实现带序号排列的功能是一项常见的需求,这主要涉及到Flex4的List组件、数据绑定、ItemRenderer自定义以及数据管理等方面的知识。下面将详细介绍如何实现这样的功能。 1. *...
在Flex中,实现基于桌面的分页功能是常见且重要的需求,尤其是在处理大量数据时,分页能有效提高用户体验,减少加载时间。本文将详细讲解如何在Flex中实现桌面应用的分页功能。 首先,我们要理解Flex中的数据网格...
在Flex3中,我们可以使用DataGrid、List等组件来展示数据,并通过集成分页控件来实现分页功能。下面将详细介绍如何在Flex3中实现分页示例: 1. **数据模型**:首先,你需要一个数据模型来存储要显示的数据。这可以...
4. **视图容器**:在Flex中,使用List、DataGrid或其他视图容器展示分页数据。通过改变容器的数据提供者,可以实现在不同页面间切换。 5. **数据绑定**:利用Flex的数据绑定机制,将数据集与视图容器关联起来。当...
除了上述控件,还有菜单控件(Menu controls)、按钮控件(Button controls)和其他Flex控件(Flex controls)以及容器控件,这些控件提供了丰富的交互性和视觉效果,如Button、List、Accordion、TabNavigator等,...
Flex开发学习笔记4主要关注的是如何在Flex应用中实现分页列表组件,这对于构建大型数据展示界面至关重要。Flex是一个开源的、基于ActionScript的框架,用于创建富互联网应用程序(RIA)。在这里,我们不仅会探讨Flex...
在Flex中,数据分页通常通过使用Flex提供的各种组件和类来实现,如DataGrid、List或Accordion等。这些组件可以与数据提供者结合,如ArrayCollection或XMLListCollection,以便在用户界面上只显示一部分数据,从而...
以下是一些关于如何在Flex中实现这样的功能的关键知识点: 1. **组件选择**:Flex提供了多种组件可以用来实现自动完成,如`ComboBox`和`List`。在这种情况下,`AutoComplete`或自定义`TextInput`控件可能是最佳选择...
8. **自定义组件(Custom Components)**:如果Flex的内置分页组件不能满足需求,开发者可以创建自定义组件来实现更复杂的分页功能,比如动态加载、无限滚动等。 9. **错误处理(Error Handling)**:处理可能出现...
在Flex中,我们可以使用DataGrid结合Flex提供的Pagination控件或者自定义分页实现这一目标。 1. **使用Built-in Pagination** Adobe Flex SDK提供了一个名为Pagination的组件,可以与List或DataGrid一起使用。首先...
在Flex开发中,`Datagrid`组件是一种常用的展示数据列表的控件,而分页和数据高亮显示是提升用户体验的重要功能。本篇主要探讨如何在Flex的`Datagrid`中实现分页定位和高亮显示。 首先,分页定位涉及的主要任务是...
### Oracle + jdbcTemplate + Spring + Java + Flex 实现分页 #### 一、Oracle存储过程分页 在Oracle数据库中,为了实现高效的分页查询,通常会采用存储过程的方式来完成。这种方式能够有效地减少网络传输的数据量...
在Flex中,下拉控件(Dropdown)通常由ComboBox或List控件实现,而数据网格(DataGrid)则用于显示和操作结构化的表格数据。要实现“带dataGrid的自定义下拉控件”,我们需要对这两个组件进行组合和定制,创建一个...
1. DataGrid组件简介:DataGrid是Flex中一个功能强大的表格控件,可以显示多列数据,并支持排序、选择、分页等操作。它适用于展示结构化的数据集合,如数据库查询结果或者XML数据。 2. 使用步骤: - 创建DataGrid...
9. **列表组件**:`Flex3GSEIII_d_Lists`可能涉及如何使用List、DataGrid等组件来展示和操作数据列表,以及如何实现数据绑定和分页功能。 通过这些示例,学习者不仅可以掌握Flex的基本用法,还能了解到如何在实际...
- **使用Ext.Js**:前端页面使用Ext.Js创建GridPanel,并绑定PagingToolbar组件,以便实现分页功能。 ```javascript Ext.onReady(function() { var store = new Ext.data.JsonStore({ url: 'display.action', ...