分页控件

    技术2022-05-20  68

    该分页控件分成了客户端与服务端两部分:

    <?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"> <fx:Declarations> </fx:Declarations> <fx:Metadata> [Event(name="page_change",type="common.dividePage.PageEvent")] </fx:Metadata> <fx:Script> <!--[CDATA[ import backdcms.Page; import mx.collections.ArrayCollection; import spark.events.IndexChangeEvent; [Bindable] public var totlePages:ArrayCollection; [Bindable] public var page:Page; protected function lastPageBtn_clickHandler(event:MouseEvent):void { page.cur-=1; dispatchEvent(new PageEvent(PageEvent.PAGECHANGE, page)); } protected function pageComBox_changeHandler(event:IndexChangeEvent):void { // TODO Auto-generated method stub } protected function nextPageBtn_clickHandler(event:MouseEvent):void { page.cur+=1; dispatchEvent(new PageEvent(PageEvent.PAGECHANGE, page)); } protected function bottomPageBtn_clickHandler(event:MouseEvent):void { page.cur=page.total / page.size; page.cur+=1; dispatchEvent(new PageEvent(PageEvent.PAGECHANGE, page)); } protected function topPageBtn_clickHandler(event:MouseEvent):void { page.cur=1; dispatchEvent(new PageEvent(PageEvent.PAGECHANGE, page)); } private function enabledNext(cur:int, totle:int):Boolean { return cur <= totle; } ]]--> </fx:Script> <s:Button id="topPageBtn" label="首页" click="topPageBtn_clickHandler(event)"/> <s:Button id="lastPageBtn" label="上一页" enabled="{page.cur-1>0}" click="lastPageBtn_clickHandler(event)"/> <s:ComboBox id="pageComBox" width="40" change="pageComBox_changeHandler(event)"/> <s:Button id="nextPageBtn" label="下一页" enabled="{enabledNext(page.cur+1,page.total/page.size+1)}" click="nextPageBtn_clickHandler(event)"/> <s:Button id="bottomPageBtn" label="尾页" click="bottomPageBtn_clickHandler(event)"/> </s:HGroup>

    事件代码:

    package common.dividePage { import backdcms.Page; import flash.events.Event; public class PageEvent extends Event { private var _page:Page; public static const PAGECHANGE:String="page_change"; public function PageEvent(type:String, page:Page) { this.page=page; super(type); } public function get page():Page { return _page; } public function set page(value:Page):void { _page=value; } } }

    分页对象,包括封装了起始页,页数,总条数,返回结果等:

    package backdcms { import mx.collections.ArrayCollection; [RemoteClass(alias="com.backdcms.model.Page")] [Bindable] public class Page { private var _cur:int=1; private var _size:int=6; private var _total:int=1; private var _result:ArrayCollection; public function Page() { } public function get result():ArrayCollection { return _result; } public function set result(value:ArrayCollection):void { _result = value; } public function get cur():int{ return _cur; } public function set cur(pData:int):void{ _cur=pData; } public function get size():int{ return _size; } public function set size(pData:int):void{ _size=pData; } public function get total():int{ return _total; } public function set total(pData:int):void{ _total=pData; } } }

    服务端分页对象代码:

    /** * */ package com.backdcms.model; import java.util.List; /** * @author Administrator * */ public class Page { private int cur = 1; private int size = 6; private Integer total = 1; private List result; public int getCur() { return this.cur; } public void setCur(int cur) { this.cur = cur; } public int getSize() { return this.size; } public List getResult() { return result; } public void setResult(List result) { this.result = result; } public void setSize(int size) { this.size = size; } public Integer getTotal() { return this.total; } public void setTotal(Integer total) { this.total = total; } }

    业务代码:

    @Override public Page findTusers(Page page) { page.setTotal(this.getRows()); page.setResult(tuserDao.getPagesEntity(page, "from Tuser")); page.setTotal(getRows()); return page; } @Override public Integer getRows() { return tuserDao.getRows("select count(*) from Tuser"); }

    Dao层的实现

    @Override public List<T> getPagesEntity(Page page, final String hql) { Session session = getSession(); Query query = session.createQuery(hql); query.setFirstResult((page.getCur() - 1) * page.getSize()); query.setMaxResults(page.getSize()); return query.list(); // final int size1 = page.getSize(); // final int startRow = (page.getCur() - 1) * page.getSize(); // return this.getHibernateTemplate().executeFind(new // HibernateCallback() { // public List doInHibernate(Session session) // throws HibernateException { // Query query = session.createQuery(hql); // query.setFirstResult(startRow); // query.setMaxResults(size1); // return query.list(); // } // }); } public Integer getRows(String sql) { Session session = getSession(); // Query query = session.createSQLQuery(sql); Number number = ((Number) session.createQuery(sql).iterate().next()); return number.intValue(); }


    最新回复(0)