`
cloud21
  • 浏览: 397388 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Flex 4 List控件分页功能的实现

    博客分类:
  • Flex
阅读更多
要想了解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的分页功能。
分享到:
评论

相关推荐

    flex 分页控件

    4. **数据绑定**:Flex支持数据绑定,这意味着分页控件的状态可以与数据模型进行同步。通过双向数据绑定,当数据源发生变化时,分页控件可以自动更新。 5. **皮肤化**:Flex的强项之一是其强大的皮肤化能力。自定义...

    Flex +BlazeDS+java后台分页的实现

    Flex + BlazeDS + Java 后台分页的实现是一个关键的技术环节,特别是在开发大型Web应用程序时,为了提高用户体验和系统性能,数据通常需要通过分页的方式进行加载。本方案主要探讨了如何在Flex前端和BlazeDS中间件与...

    Flex4 DataGrid控件行编辑项目

    在Flex4.6开发环境中,DataGrid控件是用于展示数据集合的重要组件,它提供了丰富的功能,如排序、分页和自定义列显示。在这个项目中,我们关注的是如何实现DataGrid的行编辑功能,特别是在行中嵌套ComboBox控件以...

    flex 分页

    在Flex中,可以使用`mx.controls.Pagination`类或者自定义分页组件来实现高级功能,例如动态加载数据、显示页码选择器等。同时,还可以利用`mx.rpc.events.ResultEvent`和`mx.rpc.events.FaultEvent`处理服务端数据...

    Flex4.x 构建可编辑的List【带序号排列】

    在Flex4.x中,构建一个可编辑的List组件并实现带序号排列的功能是一项常见的需求,这主要涉及到Flex4的List组件、数据绑定、ItemRenderer自定义以及数据管理等方面的知识。下面将详细介绍如何实现这样的功能。 1. *...

    基于桌面的flex的分页实现

    在Flex中,实现基于桌面的分页功能是常见且重要的需求,尤其是在处理大量数据时,分页能有效提高用户体验,减少加载时间。本文将详细讲解如何在Flex中实现桌面应用的分页功能。 首先,我们要理解Flex中的数据网格...

    flex3 分页示例

    在Flex3中,我们可以使用DataGrid、List等组件来展示数据,并通过集成分页控件来实现分页功能。下面将详细介绍如何在Flex3中实现分页示例: 1. **数据模型**:首先,你需要一个数据模型来存储要显示的数据。这可以...

    flex 分页学习例子

    4. **视图容器**:在Flex中,使用List、DataGrid或其他视图容器展示分页数据。通过改变容器的数据提供者,可以实现在不同页面间切换。 5. **数据绑定**:利用Flex的数据绑定机制,将数据集与视图容器关联起来。当...

    flex基本控件总结

    除了上述控件,还有菜单控件(Menu controls)、按钮控件(Button controls)和其他Flex控件(Flex controls)以及容器控件,这些控件提供了丰富的交互性和视觉效果,如Button、List、Accordion、TabNavigator等,...

    Flex 开发学习笔记4 - 应用分页列表组件

    Flex开发学习笔记4主要关注的是如何在Flex应用中实现分页列表组件,这对于构建大型数据展示界面至关重要。Flex是一个开源的、基于ActionScript的框架,用于创建富互联网应用程序(RIA)。在这里,我们不仅会探讨Flex...

    flex分页组建

    在Flex中,数据分页通常通过使用Flex提供的各种组件和类来实现,如DataGrid、List或Accordion等。这些组件可以与数据提供者结合,如ArrayCollection或XMLListCollection,以便在用户界面上只显示一部分数据,从而...

    flex 自动完成控件(类似google输入框)

    以下是一些关于如何在Flex中实现这样的功能的关键知识点: 1. **组件选择**:Flex提供了多种组件可以用来实现自动完成,如`ComboBox`和`List`。在这种情况下,`AutoComplete`或自定义`TextInput`控件可能是最佳选择...

    Flex前台分页

    8. **自定义组件(Custom Components)**:如果Flex的内置分页组件不能满足需求,开发者可以创建自定义组件来实现更复杂的分页功能,比如动态加载、无限滚动等。 9. **错误处理(Error Handling)**:处理可能出现...

    flex datagrid分页

    在Flex中,我们可以使用DataGrid结合Flex提供的Pagination控件或者自定义分页实现这一目标。 1. **使用Built-in Pagination** Adobe Flex SDK提供了一个名为Pagination的组件,可以与List或DataGrid一起使用。首先...

    flex中的datagrid的分页定位以及高亮显示

    在Flex开发中,`Datagrid`组件是一种常用的展示数据列表的控件,而分页和数据高亮显示是提升用户体验的重要功能。本篇主要探讨如何在Flex的`Datagrid`中实现分页定位和高亮显示。 首先,分页定位涉及的主要任务是...

    Oracle + jdbcTemplate + Spring + Java + Flex 实现分页

    ### Oracle + jdbcTemplate + Spring + Java + Flex 实现分页 #### 一、Oracle存储过程分页 在Oracle数据库中,为了实现高效的分页查询,通常会采用存储过程的方式来完成。这种方式能够有效地减少网络传输的数据量...

    flex下拉dataGrid

    在Flex中,下拉控件(Dropdown)通常由ComboBox或List控件实现,而数据网格(DataGrid)则用于显示和操作结构化的表格数据。要实现“带dataGrid的自定义下拉控件”,我们需要对这两个组件进行组合和定制,创建一个...

    Flex4之DataGrid四个的示例【客户端和服务器端】

    1. DataGrid组件简介:DataGrid是Flex中一个功能强大的表格控件,可以显示多列数据,并支持排序、选择、分页等操作。它适用于展示结构化的数据集合,如数据库查询结果或者XML数据。 2. 使用步骤: - 创建DataGrid...

    Flex示例工程的源代码

    9. **列表组件**:`Flex3GSEIII_d_Lists`可能涉及如何使用List、DataGrid等组件来展示和操作数据列表,以及如何实现数据绑定和分页功能。 通过这些示例,学习者不仅可以掌握Flex的基本用法,还能了解到如何在实际...

    Ext_Js分页显示案例详解

    - **使用Ext.Js**:前端页面使用Ext.Js创建GridPanel,并绑定PagingToolbar组件,以便实现分页功能。 ```javascript Ext.onReady(function() { var store = new Ext.data.JsonStore({ url: 'display.action', ...

Global site tag (gtag.js) - Google Analytics