- 浏览: 599761 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
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 1652原来一直以为as是用来类型强制转换的,结果发现用as不能把st ... -
flex中datagrid使用itemrender后的排序
2013-09-02 17:21 559一直以为设置了labelfunction或者使用了itemre ... -
flex组件在鼠标悬浮时变成手型
2013-08-28 14:09 808只需要设置useHandCursor和buttonMode两个 ... -
设置itemCreationPolicy使页面创建时元素已经创建
2013-08-28 14:07 861<?xml version="1.0" ... -
flex rpc通信时,使鼠标处于busy状态
2013-08-28 14:04 620可以使用CursorManager来控制.但是remoteOb ... -
flex 移除dataprovider里的项目时,ItemRenderer set方法传值为null
2013-08-28 13:52 1641<?xml version="1.0" ... -
actionscript package level function 包级别函数
2013-07-30 16:04 905在java中,所有的函数只能定义在类中,而as中,functi ... -
不同语言中的字符串split
2013-07-30 16:01 894javascript中 function bar() { ... -
flex只读属性Bindable
2013-07-30 15:59 1258flex中,属性上标记Bindable,在属性变化时能进行数据 ... -
flex图表坐标标签旋转(Rotating chart axis labels)
2013-07-09 08:41 1406flex图表的横坐标可以旋转90度,尽可能节省空间. 具体方法 ... -
flex中的变量
2013-06-11 18:53 1670<?xml version="1.0" ... -
flex中利用Spacer布局
2013-05-19 21:22 1998比如在html中,为了让一个元素靠左,一个元素靠右,可以依靠f ... -
as的this和js的this
2013-05-19 20:54 880在js中,我们会随手写下这样的代码 <html> ... -
Flex的一点入门经验(9)--强制更新datagrid
2013-05-19 20:14 3871比如我们有个如下的VO [Bindable] pub ... -
Flex的一点入门经验(8)--itemRenderer与外部组件的通信
2013-05-19 19:39 3373比如我们有个如下的VO package com.cra ... -
Flex的一点入门经验(7)--spark组件的滚动条
2013-05-19 14:32 2785在原来的mx组件中,如果子元素大小超过了container的大 ... -
Flex的一点入门经验(6)--spark ButtonBar组件的问题
2013-05-15 23:52 3194运行以下代码 <?xml version=&quo ... -
Flex的一点入门经验(5)--flex的DataGrid中自定义显示项目
2013-05-04 11:58 1198有如下一个简单的VO,有两个属性name和capacity. ... -
Flex的一点入门经验(3)--利用state进行页面切换
2013-04-28 13:38 2671http://kabike.iteye.com/blog/18 ... -
Flex的一点入门经验(2)--itemRenderer的使用
2013-04-28 13:03 6180http://kabike.iteye.com/blog/18 ...
相关推荐
NULL 博文链接:https://yuchengj-824316079-qq-com.iteye.com/blog/1184429
这是项目文件大家运行一下看看效果....... 如果大家整出更炫的效果,拿出来分享下哦 博文链接:https://hacker47.iteye.com/blog/196366
请下载part1 博文链接:https://hacker47.iteye.com/blog/182250
安装了Flex插件的Eclipse项目工程 博文链接:https://lib.iteye.com/blog/202883
spring-flex-1.5.0.M2-dist.zip spring-flex-1.5.0.M2 spring-flex-1.5.0.M2.jar SBI
资源包含flex-2.5.4+bison-2.4.1+mingw,此外包含本人写的测试源码,编译命令及详细过程,另附一些有用的文章pdf,用于编译原理课程学习。详细使用参考文章:...
项目文件,运行看效果 博文链接:https://hacker47.iteye.com/blog/196370
Flex 全景图源码-----街景 Flex 全景图源码-----街景
离线安装包,亲测可用
FLEX开发工具。Flex Builder 4-7 win64 安装文件,第四卷。
跟我StepByStep学FLEX教程------王一松