- 浏览: 609557 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
fei33423:
同意你的说法. hbase 的强一致性分为两部分来说. 数据分 ...
浅谈Hbase 的强一致性 -
zengwenbo5566:
,高人,刚安装了 genymotion 那个附带 virtu ...
VirtualBox报错Unable to load R3 module GetLastError=1790 (VERR_UNRESOLVED_ERROR -
kabike:
QQ1289714862 写道这代码有问题吧 bar1 bar ...
AtomicBoolean运用 -
QQ1289714862:
这代码有问题吧 bar1 bar2 那来的 你是不是new了两 ...
AtomicBoolean运用 -
DEMONU:
需要依赖这么多东西啊
hbase 0.96和hadoop 2.2 java 客户端的jar依赖
基本各种列表都和分页有着密不可分的关系.
在barServer这个工程里,我们首先添加一个新的实体类Product,然后添加一个公共的分页结果对象.
这样无论是学生的分页结果还是product的分页结果,都可以用这个对象返回.
StudentService类中两个模拟的分页查询方法如下
flex端同样定义对应的分页对象
这样就可以使用这个FlexPagination了
效果如图所示
我们在这里新定义了一个PaginationEvent类,多了一个目标页数_destinationPageNumber这个属性.
对于分页控件,则可以用以下两种方式实现
1 Repeater.
barClient/src/com/crap/components/PaginationHalo.mxml内容如下
Repeater是halo包里的,它必须出现在一个halo容器里,所以用一个HBox包住了它.注意它里面button的产生label可以用currentItem指代当前的Item,但是绑定handler的时候,要用getRepeaterItem().因为当handler被触发的时候,repeate已经结束了.
2 DataGroup
barClient/src/com/crap/components/PaginationSpark.mxml内容如下
在这两个自定义组件上,都可以使用元数据标签
这样在引用组件的时候,可以直接添加event handler
在barServer这个工程里,我们首先添加一个新的实体类Product,然后添加一个公共的分页结果对象.
package com.crap.common; import java.util.List; public class Pagination<T> { //当前页数 private int currentPageNumber; //总页数 private int totalPageNumber; //当前页的item list private List<T> itemList; // 省略getter和setter }
这样无论是学生的分页结果还是product的分页结果,都可以用这个对象返回.
StudentService类中两个模拟的分页查询方法如下
public Pagination<Student> paginateStudent() { Pagination<Student> result = new Pagination<Student>(); result.setCurrentPageNumber(3); result.setTotalPageNumber(5); result.setItemList(this.studentDao.findStudentList()); return result; } public Pagination<Product> paginateProduct() { Pagination<Product> result = new Pagination<Product>(); result.setCurrentPageNumber(2); result.setTotalPageNumber(8); List<Product> list = new ArrayList<Product>(); Product p = new Product(); p.setId(0); p.setName("product 1"); p.setPrice(34.2); p.setOnline(true); list.add(p); p = new Product(); p.setId(1); p.setName("product 2"); p.setPrice(14); p.setOnline(true); list.add(p); p = new Product(); p.setId(2); p.setName("product 3"); p.setPrice(380); p.setOnline(true); list.add(p); result.setItemList(list); return result; }
flex端同样定义对应的分页对象
package com.crap.model{ import mx.collections.ArrayCollection; [Bindable] [RemoteClass(alias="com.crap.common.Pagination")] public class FlexPagination { public function FlexPagination() { } private var _currentPageNumber :int; private var _totalPageNumber :int; private var _itemList:ArrayCollection; //省略setter和getter } }
这样就可以使用这个FlexPagination了
<?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:crap="com.crap.components.*" minWidth="955" minHeight="600"> <fx:Declarations> <s:RemoteObject id="studentRO" destination="student"> <s:method name="paginateStudent" result="onPaginationStudent(event)"/> <s:method name="paginateProduct" result="onPaginationProduct(event)"/> </s:RemoteObject> </fx:Declarations> <fx:Script> <![CDATA[ import com.crap.event.PaginationEvent; import com.crap.model.FlexPagination; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.rpc.events.ResultEvent; [Bindable] private var studentList:ArrayCollection; [Bindable] private var productList:ArrayCollection; private function onPaginationStudent(event:ResultEvent):void{ var pagination:FlexPagination=event.result as FlexPagination; studentList=pagination.itemList; pagination1.currentNumber=pagination.currentPageNumber; pagination1.totalNumber=pagination.totalPageNumber; } private function onPaginationProduct(event:ResultEvent):void{ var pagination:FlexPagination=event.result as FlexPagination; productList=pagination.itemList; pagination2.currentNumber=pagination.currentPageNumber; pagination2.totalNumber=pagination.totalPageNumber; } private function onPageChanged(pageEvent:PaginationEvent):void{ Alert.show("我们要跳转到"+pageEvent.destinationPageNumber); } ]]> </fx:Script> <s:VGroup> <s:Button label="刷新1" click="studentRO.paginateStudent()"/> <s:Button label="刷新2" click="studentRO.paginateProduct()"/> <crap:PaginationHalo id="pagination1" pageChanged="onPageChanged(event)"/> <s:DataGrid id="studentDG" width="100%" dataProvider="{studentList}"> <s:columns> <s:ArrayList> <s:GridColumn dataField="id" headerText="ID"/> <s:GridColumn dataField="name" headerText="姓名"/> </s:ArrayList> </s:columns> </s:DataGrid> <crap:PaginationSpark id="pagination2" pageChanged="onPageChanged(event)"/> <s:DataGrid id="productDG" width="100%" dataProvider="{productList}"> <s:columns> <s:ArrayList> <s:GridColumn dataField="id" headerText="ID"/> <s:GridColumn dataField="name" headerText="姓名"/> <s:GridColumn dataField="price" headerText="价格"/> <s:GridColumn dataField="online" headerText="是否上架"/> </s:ArrayList> </s:columns> </s:DataGrid> </s:VGroup> </s:Application>
效果如图所示
我们在这里新定义了一个PaginationEvent类,多了一个目标页数_destinationPageNumber这个属性.
对于分页控件,则可以用以下两种方式实现
1 Repeater.
barClient/src/com/crap/components/PaginationHalo.mxml内容如下
<?xml version="1.0" encoding="utf-8"?> <s:HGroup 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="20"> <fx:Script> <![CDATA[ import com.crap.event.PaginationEvent; import mx.collections.ArrayCollection; private var _totalNumber:int; [Bindable] private var _currentNumber:int; [Bindable] private var dataProvider:ArrayCollection=new ArrayCollection(); private function nextPage():void{ var event:PaginationEvent=new PaginationEvent("pageChanged",true,true); event.destinationPageNumber=this._currentNumber+1; this.dispatchEvent(event); } private function previousPage():void{ var event:PaginationEvent=new PaginationEvent("pageChanged",true,true); event.destinationPageNumber=this._currentNumber-1; this.dispatchEvent(event); } private function gotoPage(pageNumber:int):void{ var event:PaginationEvent=new PaginationEvent("pageChanged",true,true); event.destinationPageNumber=pageNumber; this.dispatchEvent(event); } public function set currentNumber(value:int):void { _currentNumber = value; } public function set totalNumber(value:int):void { _totalNumber = value; dataProvider.removeAll(); for(var i:int=1;i<=value;i++){ this.dataProvider.addItem({pageNumber:i}); } } ]]> </fx:Script> <fx:Metadata> [Event(name="pageChanged", type="com.crap.event.PaginationEvent")] </fx:Metadata> <s:Button label="上一页" click="previousPage();"> </s:Button> <mx:HBox> <mx:Repeater id="rep" dataProvider="{dataProvider}"> <s:Button label="第{rep.currentItem.pageNumber}页" click="gotoPage(event.target.getRepeaterItem().pageNumber);" enabled="{rep.currentItem.pageNumber!=_currentNumber}"> </s:Button> </mx:Repeater> </mx:HBox> <s:Button label="下一页" click="nextPage();"> </s:Button> </s:HGroup>
Repeater是halo包里的,它必须出现在一个halo容器里,所以用一个HBox包住了它.注意它里面button的产生label可以用currentItem指代当前的Item,但是绑定handler的时候,要用getRepeaterItem().因为当handler被触发的时候,repeate已经结束了.
2 DataGroup
barClient/src/com/crap/components/PaginationSpark.mxml内容如下
<?xml version="1.0" encoding="utf-8"?> <s:HGroup xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" width="400" height="20"> <fx:Metadata> [Event(name="pageChanged", type="com.crap.event.PaginationEvent")] </fx:Metadata> <fx:Script> <![CDATA[ import com.crap.event.PaginationEvent; import mx.collections.ArrayCollection; private var _totalNumber:int; private var _currentNumber:int; [Bindable] private var dataProvider:ArrayCollection=new ArrayCollection(); public function set currentNumber(value:int):void { _currentNumber = value; } public function set totalNumber(value:int):void { _totalNumber = value; dataProvider.removeAll(); for(var i:int=1;i<=value;i++){ this.dataProvider.addItem({pageNumber:i}); } } private function nextPage():void{ var event:PaginationEvent=new PaginationEvent("pageChanged",true,true); event.destinationPageNumber=this._currentNumber+1; this.dispatchEvent(event); } private function previousPage():void{ var event:PaginationEvent=new PaginationEvent("pageChanged",true,true); event.destinationPageNumber=this._currentNumber-1; this.dispatchEvent(event); } ]]> </fx:Script> <s:Button label="上一页" click="previousPage();"> </s:Button> <s:DataGroup dataProvider="{dataProvider}"> <s:layout> <s:HorizontalLayout/> </s:layout> <s:itemRenderer> <fx:Component> <s:GridItemRenderer> <s:Button label="第{data.pageNumber}页"> <fx:Script> <![CDATA[ import com.crap.event.PaginationEvent; ]]> </fx:Script> <s:click> <![CDATA[ var paginationEvent:PaginationEvent=new PaginationEvent("pageChanged",true,true); paginationEvent.destinationPageNumber=data.pageNumber; this.dispatchEvent(paginationEvent); ]]> </s:click> </s:Button> </s:GridItemRenderer> </fx:Component> </s:itemRenderer> </s:DataGroup> <s:Button label="下一页" click="nextPage();"> </s:Button> </s:HGroup>
在这两个自定义组件上,都可以使用元数据标签
<fx:Metadata> [Event(name="pageChanged", type="com.crap.event.PaginationEvent")] </fx:Metadata>
这样在引用组件的时候,可以直接添加event handler
<crap:PaginationHalo id="pagination1" pageChanged="onPageChanged(event)"/> <crap:PaginationSpark id="pagination2" pageChanged="onPageChanged(event)"/>
发表评论
-
actionscript3里的as关键字和强制类型转换
2013-09-11 10:45 1692原来一直以为as是用来类型强制转换的,结果发现用as不能把st ... -
flex中datagrid使用itemrender后的排序
2013-09-02 17:21 602一直以为设置了labelfunction或者使用了itemre ... -
flex组件在鼠标悬浮时变成手型
2013-08-28 14:09 845只需要设置useHandCursor和buttonMode两个 ... -
设置itemCreationPolicy使页面创建时元素已经创建
2013-08-28 14:07 907<?xml version="1.0" ... -
flex rpc通信时,使鼠标处于busy状态
2013-08-28 14:04 681可以使用CursorManager来控制.但是remoteOb ... -
flex 移除dataprovider里的项目时,ItemRenderer set方法传值为null
2013-08-28 13:52 1699<?xml version="1.0" ... -
actionscript package level function 包级别函数
2013-07-30 16:04 960在java中,所有的函数只能定义在类中,而as中,functi ... -
不同语言中的字符串split
2013-07-30 16:01 927javascript中 function bar() { ... -
flex只读属性Bindable
2013-07-30 15:59 1311flex中,属性上标记Bindable,在属性变化时能进行数据 ... -
flex图表坐标标签旋转(Rotating chart axis labels)
2013-07-09 08:41 1453flex图表的横坐标可以旋转90度,尽可能节省空间. 具体方法 ... -
flex中的变量
2013-06-11 18:53 1729<?xml version="1.0" ... -
flex中利用Spacer布局
2013-05-19 21:22 2044比如在html中,为了让一个元素靠左,一个元素靠右,可以依靠f ... -
as的this和js的this
2013-05-19 20:54 948在js中,我们会随手写下这样的代码 <html> ... -
Flex的一点入门经验(9)--强制更新datagrid
2013-05-19 20:14 3919比如我们有个如下的VO [Bindable] pub ... -
Flex的一点入门经验(8)--itemRenderer与外部组件的通信
2013-05-19 19:39 3411比如我们有个如下的VO package com.cra ... -
Flex的一点入门经验(7)--spark组件的滚动条
2013-05-19 14:32 2826在原来的mx组件中,如果子元素大小超过了container的大 ... -
Flex的一点入门经验(6)--spark ButtonBar组件的问题
2013-05-15 23:52 3235运行以下代码 <?xml version=&quo ... -
Flex的一点入门经验(5)--flex的DataGrid中自定义显示项目
2013-05-04 11:58 1236有如下一个简单的VO,有两个属性name和capacity. ... -
Flex的一点入门经验(3)--利用state进行页面切换
2013-04-28 13:38 2723http://kabike.iteye.com/blog/18 ... -
Flex的一点入门经验(2)--itemRenderer的使用
2013-04-28 13:03 6240http://kabike.iteye.com/blog/18 ...
相关推荐
Flex基础与入门 - **Flex简介**:Flex是一种用于构建跨浏览器、跨平台的RIA(Rich Internet Applications)的开源框架。它结合了强大的编程语言ActionScript 3.0和XML,使得开发者能够轻松创建高性能的应用程序。 ...
本示例将带你入门FlexStore的使用,通过一个名为"bookstore"的应用来展示其核心功能。 在Flex开发中,FlexStore通常与数据网格(DataGrid)或列表组件(List)结合使用,用于展示和操作数据。它是基于AMF(Action ...
在“Flex + LCDS +JAVA入门教程”中,你可能会学习到以下内容: 1. **设置环境**:如何配置Flex Builder或者IntelliJ IDEA等IDE来开发Flex项目,以及如何在服务器上部署LCDS。 2. **创建Flex应用**:学习MXML和...
4. **数据绑定和事件处理**:学习Flex中的数据绑定机制,如何将后台数据动态显示在界面上,以及如何处理用户交互事件,实现前后端的数据同步。 5. **实时数据推送**:探讨LCDS的事件驱动推送服务,如PollingDuplex...
### Flex 3 in Action:全面掌握Flex 3与ActionScript技术要点 《Flex 3 in Action》是一本针对Adobe Flex 3平台的深入教程,它不仅涵盖了基础功能介绍,还提供了大量的实践案例来帮助读者更好地理解和应用这些知识...
#### 4. Element:Ext的核心 - **核心概念**:Element是EXT中一个重要的概念,用于表示DOM元素。它是实现EXT各种功能的基础。 - **操作方法**:通过Element可以获取、修改DOM节点,执行动画效果,触发事件等。 ####...
### ExtJS 入门文档知识点概述 #### 一、ExtJS 概述 ExtJS 是一款基于 JavaScript 的开源前端框架,主要用于构建复杂的企业级 Web 应用程序。它提供了丰富的 UI 组件库以及数据处理能力,能够帮助开发者快速构建...
4.2 CSS响应式设计:利用uni-app的flex布局和媒体查询,实现不同设备上的适配,确保在手机、平板、电脑等多端展示效果一致。 五、功能实现与优化 5.1 文章列表:创建一个列表组件,通过调用jPress API获取文章列表...
4. **最佳实践**:分享开发BlazeDS应用时的经验和技巧,避免常见的陷阱和错误。 5. **教程和示例**:提供一系列示例代码和步骤,帮助开发者快速掌握BlazeDS的使用。 通过深入学习和实践这个离线文档,开发者可以...
另一个用于快速开发的 WordPress 入门主题,包括核心主题功能和基本模板文件。 它非常简约,模板文件中包含尽可能少的样式,并且 style.css 包含 Theme Check 测试所需的类(请参阅 )。 Racine 可以用作父主题,...