菜鸡一枚,自己在做项目时,碰到了一个类似这样的一个分页要求:

分页显示数据,以及使用ajax进行数据的局部刷新

然后我一开始是有点懵逼的,因为这和我以往所看到的分页是不一样的。这里说明我只是一个小菜鸡...

这里的小圆点我是用js动态生成的,根据数据的总数以及页面容量。然后获取当前页码的话我是用索引代替的

jsp代码:

<ul class="caseInfo">                     //循环输出图片
      <c:forEach items="${pageSupportCompany.claimVoucher}" var="det" varStatus="status">
          <li>
              <a href="#" class="a1"><img src="/tjcrm_upload/${det.detailedpic}" /></a>
        </li>
       </c:forEach>
 </ul>
 <ul class="num"></ul>                   //小圆点

<script type="text/javascript">
//界面加载完毕执行以下程序
$(function(){
    var count = ${pageSupportCompany.totalCount};             //从后台获取总行数
    //根据总行数以及页面容量动态添加圆点个数
    if(count/9 <= 1){
        $('.content .num').append('<li></li>');
    }else if(count%9 != 0){
        count = Math.floor(count/9)+1;
        for (var j = 0; j < count; j++) {
            $('.content .num').append('<li></li>');
        }
    }
    //默认情况下的第一个圆点进行背景设计
    $('.content .num li').first().addClass('active');
    
    //当点击小圆点时,进行后台数据的获取以及获取索引进行分页
    $('.content .num li').click(function(){
        var index = $(this).index()+1;              //点击当前li 小圆点获取到索引,这里的加1是因为后台我进行了减一,我是懒得改了..
        
        $.ajax({                         //进行局部数据的刷新以及小圆点的样式改变
            type: 'POST',
            dataType:"json",
            url : 'getDetailedById.do',                    //后台方法的url
            data:{'typeId':1,'currPageNo':index}, 
            cache: false,
            async: true,                                         //异步
            success: function(result) {
                        var data = eval(result);            //后台获取的json转为js
                        
                        $('.content .caseInfo').children('li').remove();          //先把数据清空
                        
                        for(var j = 0; j < data.length; j++){                           //循环添加标签以及数据
                            
                            $('.content .caseInfo').append(
                                    '<li>'+
                                    '<a href="#" class="a1">'+
                                    '<img src="/tjcrm_upload/'+data[j].detailedpic+'" />'+
                                    '</a>'+
                                    '</li>'
                                    );
                        }
                        
                    }
        });
        
        $(this).addClass('active').siblings().removeClass('active');            //小圆点样式的更改
    });
});

</script>

 

后台控制器代码:

//分页显示页面(显示第一页的数据)
    @RequestMapping(value="getDetailed.do",method=RequestMethod.GET)
    public String getDetailedInfo(HttpSession session,PageSupport<Company> pageSupport,HttpServletRequest req,
            @RequestParam("typeId")String typeId ) throws IOException {
        int typeid = Integer.valueOf(typeId).intValue();
        
        pageSupport.setPageSize(9);
        pageSupport.setCurrPageNo(0);
        
        int totalCount = companyService.getCompanyCount();
        System.out.println("数据总行数:"+totalCount);
        req.setAttribute("count", pageSupport.getTotalCount());
        pageSupport.setTotalCount(totalCount);
        
        pageSupport.setCurrSize(pageSupport.getCurrPageNo()*pageSupport.getPageSize());
        session.setAttribute("pageSupportCompany", pageSupport);
        List<Company> detailedList = companyService.getDetailed(pageSupport,typeid);
        pageSupport.setClaimVoucher(detailedList);
        
        return "redirect:brand_designing.jsp";
    }
    
    //分页显示页面(根据小圆点异步刷新数据)
    @RequestMapping(value="getDetailedById.do",method=RequestMethod.POST)
    @ResponseBody
    public String getDetailedInfoById(HttpSession session,PageSupport<Company> pageSupport,HttpServletRequest req,
            HttpServletResponse resp,@RequestParam("typeId")String typeId ) {
        int typeid = Integer.valueOf(typeId).intValue();
        
        pageSupport.setPageSize(9);

        //获取来自页面的当前页码
        if(req.getParameter("currPageNo")!=null&&req.getParameter("currPageNo")!="") {
            String currPageNo=req.getParameter("currPageNo");
            int cpn = Integer.valueOf(currPageNo) - 1;
            pageSupport.setCurrPageNo(cpn);
            System.out.println("currPageNo"+pageSupport.getCurrPageNo());
        }
        int totalCount = companyService.getCompanyCount();                    //数据总行数
        pageSupport.setTotalCount(totalCount);
        
        pageSupport.setCurrSize(pageSupport.getCurrPageNo()*pageSupport.getPageSize());      //sql分页的第一个参数
        session.setAttribute("pageSupportCompany", pageSupport);
        List<Company> detailedList = companyService.getDetailed(pageSupport,typeid);
        pageSupport.setClaimVoucher(detailedList);
        JSONArray jsonArray = JSONArray.fromObject(pageSupport.getClaimVoucher());
        
        return jsonArray.toString();              //返回json
    }

 

工具类PageSupport:

package com.ydg.util;

import java.util.List;

public class PageSupport<T> {
    //当前页码-来自于用户输入
    private int currPageNo = 0;
    
    //总数量(表)
    private int totalCount = 0;
    
    //页面容量
    private int pageSize = 12;
    
    //总页数-totalCount/pageSize(+1)
    private int totalPageCount = 1;
    
    private List<T> claimVoucher;
    
    private int currSize;

    public int getCurrSize() {
        return currSize;
    }

    public void setCurrSize(int currSize) {
        this.currSize = currSize;
    }

    public final List<T> getClaimVoucher() {
        return claimVoucher;
    }

    public final void setClaimVoucher(List<T> claimVoucher) {
        this.claimVoucher = claimVoucher;
    }


    public final int getCurrPageNo() {
        return currPageNo;
    }

    public final void setCurrPageNo(int currPageNo) {
        if(currPageNo > 0){
            this.currPageNo = currPageNo;
        }else {
            this.currPageNo = 0;
        }
    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount){
        if(totalCount > 0){
            this.totalCount = totalCount;
            //设置总页数
            this.setTotalPageCountByRs();
        }
    }
    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        if(pageSize > 0){
            this.pageSize = pageSize;
        }
    }

    public int getTotalPageCount() {
        return totalPageCount;
    }

    public void setTotalPageCount(int totalPageCount) {
        this.totalPageCount = totalPageCount;
    }
    
    public void setTotalPageCountByRs(){
        if(this.totalCount % this.pageSize == 0){
            this.totalPageCount = this.totalCount / this.pageSize;
        }else if(this.totalCount % this.pageSize > 0){
            this.totalPageCount = this.totalCount / this.pageSize + 1;
        }else{
            this.totalPageCount = 0;
        }
    }    
}

 

搞定后的效果图:

分页显示数据,以及使用ajax进行数据的局部刷新

 

好啦,这就是我做的小圆点分页。期间给这个功能弄得差点奔溃,不过还好通过自身的努力搞定了,嘿嘿嘿

相关文章: