flex分页显示

DividePageDAO.class

package com.fiona.util.dividePageUtile;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Projections;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class DividePageDAO extends HibernateDaoSupport {
    public static final Log log = LogFactory.getLog(DividePageDAO.class);
   
    @SuppressWarnings("unchecked")
    public List findByPageSize(final int startRecord,
            final int pageSize,Class className)
    {
        try
        {
            log.debug("findByPageSize::start...");
            final DetachedCriteria crit = DetachedCriteria.forClass(className);           
            List list=(List) getHibernateTemplate().execute(new HibernateCallback(){
                public Object doInHibernate(org.hibernate.Session session)
                        throws HibernateException, SQLException {
                    Criteria c1 = crit.getExecutableCriteria(session);
                    List item = c1.setFirstResult(startRecord).setMaxResults(pageSize).list();
                    log.debug("the size of the item is " + item.size());
                    return item;   
                }
            });
            return list;
        }
        catch(RuntimeException e)
        {
            e.printStackTrace();
            return null;
        }       
    }
    @SuppressWarnings("unchecked")
    public Integer findTotalCount(Class className)
    {
        log.debug("findTotalCount::start...");   
        try
        {
            final DetachedCriteria crit = DetachedCriteria.forClass(className);
            Integer totalCount = (Integer)getHibernateTemplate().execute(
                new HibernateCallback()
                {
                    public Object doInHibernate(Session session)
                            throws HibernateException, SQLException
                            {                       
                     Criteria ct = crit.getExecutableCriteria(session);
                     return ct.setProjection(Projections.rowCount()).uniqueResult();                   
                }
                });   
            log.debug("the tottla count is " + totalCount);
            return totalCount.intValue();
        }
        catch(RuntimeException e)
        {
            e.printStackTrace();
            return 0;
        }       
    }
}

Flex端的组件

<?xml version="1.0" encoding="utf-8"?>
<mx:ControlBar xmlns:mx="http://www.adobe.com/2006/mxml"
             height="40"  width="100%" horizontalAlign="center">
     <mx:Script>
         <![CDATA[
         import mx.collections.ArrayCollection;
         import mx.controls.Alert;
         public var pageSize:int         = 25;//每页显示行数 
          public var _totalPage:int    = 0;//总页数 
          public var _totalRecord:int     = 0; //总记录数
          public var curPage:int         = 1; // 当前页
          public var startRecord:int     = 0;  // 起始行
          public var endRecord:int;    // 当前页的结束行   
          public var acPageSize:ArrayCollection = new ArrayCollection([
             {data:1,label:"25"},{data:2,label:"50"}]);
         public var _genFunction:Function;
        
         public function set totalRecord(varTotal:int):void
         {            
             this._totalRecord = varTotal;    
             this.computeThePageSize(this._totalRecord,this.pageSize);       
         }
        
         public function get totalRecord():int
         {
             return this._totalRecord;
         }         
        
         public function set functionName(varFunction:Function):void
        {
            this._genFunction = varFunction;               
        }
        public function get functionName():Function
        {
            return this._genFunction;
        }
        
         public function computeThePageSize(varTotalRecore:int,varPageSize:int):void
        {               
            if ( varTotalRecore == 0 )
            {
                _totalPage = 0;
                this.jumpPage.minimum = 1;
                this.jumpPage.maximum = 1;
                Alert.show("没有任何学生信息");
            }
            else
            {
                _totalPage = (varTotalRecore % varPageSize == 0 ?
                            (varTotalRecore / varPageSize): Math.floor(varTotalRecore / varPageSize)+ 1);
                this.jumpPage.minimum = 1;
                this.jumpPage.maximum = _totalPage;               
            }               
        }   
       
        public function previousPage():void
        {
            this.curPage = this.curPage-1;               
            if ( this.curPage <= 1 )
            {
                this.curPage         = 1;
                this.preBtn.enabled = false;
                this.nextBtn.enabled = true;
                this.jumpPage.value = this.curPage;
                this.startRecord     = 0;
            }
            else
            {
                this.preBtn.enabled  = true;
                this.nextBtn.enabled = true;
                this.jumpPage.value  = this.curPage;
                this.startRecord     = (this.curPage-1)*pageSize;
            }               
            this.getFunctionName(this._genFunction);
        }
           
            public function nextPage():void
            {               
                this.curPage = this.curPage + 1;               
                if ( this.curPage>=_totalPage )
                {
                    this.curPage         =_totalPage;               
                    this.nextBtn.enabled = false;
                    this.preBtn.enabled  = true;
                    this.jumpPage.value  = this.curPage;
                    this.startRecord     = (this.curPage-1)*pageSize;                                       
                }               
                else
                {   
                    this.preBtn.enabled  = true;
                    this.nextBtn.enabled = true;
                    this.jumpPage.value  = this.curPage;
                    this.startRecord      = (this.curPage-1)* pageSize;
                }   
                this.getFunctionName(this._genFunction);                       
            }
           
            public function changePage():void
            {   
                if ( this.curPage <= 1)
                {
                    this.curPage         = this.jumpPage.value;
                    this.preBtn.enabled  = false;
                    this.nextBtn.enabled = true;
                    this.startRecord     = 0;
                }
                else if ( this.curPage >= _totalPage )
                {
                    this.curPage         = this.jumpPage.value;
                    this.preBtn.enabled  = true;
                    this.nextBtn.enabled = false;
                    this.startRecord     = (this.curPage-1) * pageSize;                   
                }
                else
                {
                    this.curPage         = this.jumpPage.value;                   
                    this.preBtn.enabled  = true;
                    this.nextBtn.enabled = true;
                    this.startRecord     = (this.curPage-1)*pageSize ;
                }   
               
                this.getFunctionName(this._genFunction);           
            }
           
            public function changePageSize():void
            {               
                this.curPage = 1;
                this.startRecord = 0;
                this.preBtn.enabled=false;
                if(this.curPage < _totalPage)
                {
                    this.nextBtn.enabled = true;
                }
                else
                {
                    this.nextBtn.enabled = false;
                }           
                this.jumpPage.value = this.curPage;
                this.pageSize = this.recordPerPage.selectedItem.label;               
                computeThePageSize(totalRecord,this.pageSize);
                           
                this.getFunctionName(this._genFunction);
            }
           
       
            public function getFunctionName(functionName:Function):void           
            {               
                _genFunction(this.startRecord,this.pageSize);   
            }
         ]]>
     </mx:Script>
    <mx:Button id="preBtn" label="上一页" click="previousPage()"/>                   
    <mx:Button  id="nextBtn" label="下一页" click="nextPage()"/>
    <mx:Label text="每页显示"/>
    <mx:ComboBox id="recordPerPage" dataProvider="{acPageSize}"  change="changePageSize()" height="25" width="64"/>               
    <mx:Label text="条"/>
    <mx:Label text="跳转到第"/>
    <mx:NumericStepper  id="jumpPage" minimum="1"  maximum="{_totalPage}"  click="changePage()" />
    <mx:Label text="页"/>               
</mx:ControlBar>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值