jsp頁面的分頁---假分頁


                                    jsp頁面假分頁

      頁面的假分頁:就是一次性的將數據庫中的數據獲取后返回頁面,然后通過js將頁面進行控制,這每次點擊分頁控件的時候,不需要進入后台服務器進行獲取數據

      優缺點:從數據庫中取出所有的數據,然后分頁在界面上顯示。訪問一次數據庫,但由於選擇的數據量比較大,所以第一次花費時間比較長,但之后每一頁的顯示都是直接、快速的,避免對數據庫的多次訪問。

綜上:如果數據量較小,使用假分頁的效果會更優,如果數據量龐大,使用真分頁的效果更優。注意分頁控件的js的引入位置一定能夠是咋分頁的Div的下面。不能在頁面的頭部引入。

下面是代碼:

首先是js  

     創建pagging.js 代碼如下:

 

//獲取對應控件  pagging.js
var totalPage = document.getElementById("spanTotalPage");//總頁數
var pageNum = document.getElementById("spanPageNum");//當前頁
var totalInfor = document.getElementById("spanTotalInfor");//記錄總數
var pageNum2 = document.getElementById("Text1");//當前頁文本框

var spanPre = document.getElementById("spanPre");//上一頁
var spanNext = document.getElementById("spanNext");//下一頁
var spanFirst = document.getElementById("spanFirst");//首頁
var spanLast = document.getElementById("spanLast");//尾頁
var pageSize = 10;//每頁信息條數

var numberRowsInTable = theTable.rows.length-1;//表格最大行數

var page = 1;

//下一頁
function next() {
    if (pageCount() <= 1) {
    }
    else {
            hideTable();
            currentRow = pageSize * page + 1; //下一頁的第一行
            maxRow = currentRow + pageSize;    //下一頁的一行
            if (maxRow > numberRowsInTable) maxRow = numberRowsInTable+1;//如果計算中下一頁最后一行大於實際最后一行行號
            for (var i = currentRow; i < maxRow; i++) {
                theTable.rows[i].style.display = '';
            }
            page++;
            pageNum2.value = page;
            if (maxRow == numberRowsInTable) { //如果下一頁的最后一行是表格的最后一行
                nextNoLink(); //下一頁 和尾頁 不點擊
                lastNoLink(); 
            }
            showPage();//更新page顯示
            if (page == pageCount()) {//如果當前頁是尾頁
                nextNoLink();
                lastNoLink();
            }
            
            preLink();
            firstLink();
        }
    }



//上一頁
function pre() {
    if (pageCount() <= 1) {
    }
    else {       
            hideTable();
            page--;
            pageNum2.value = page;
            currentRow = pageSize * page + 1;//下一頁的第一行
            maxRow = currentRow - pageSize;//本頁的第一行
            if (currentRow > numberRowsInTable) currentRow = numberRowsInTable;//如果計算中本頁的第一行小於實際首頁的第一行行號,則更正
            for (var i = maxRow; i < currentRow; i++) {
                theTable.rows[i].style.display = '';
            }
            if (maxRow == 0) { preNoLink(); firstNoLink(); }
            showPage();//更新page顯示
            if (page == 1) {
                firstNoLink();
                preNoLink();
            }
            nextLink();
            lastLink();
        }
    }


//第一頁
function first() {
    
    if (pageCount() <= 1) {
    }
    else {
        hideTable();//隱藏所有行
        page = 1;
        pageNum2.value = page;
        for (var i = 1; i < pageSize+1; i++) {//顯示第一頁的信息
            theTable.rows[i].style.display = '';
        }
        showPage();//設置當前頁

        firstNoLink();
        preNoLink();
        nextLink();
        lastLink();
    }
}


//最后一頁
function last() {
    if (pageCount() <= 1) {
    }
    else {
        hideTable();//隱藏所有行
        page = pageCount();//將當前頁設置為最大頁數
        pageNum2.value = page;
        currentRow = pageSize * (page - 1)+1;//獲取最后一頁的第一行行號
        for (var i = currentRow; i < numberRowsInTable+1; i++) {//顯示表格中最后一頁信息
            theTable.rows[i].style.display = '';
        }

        showPage();
        lastNoLink();
        nextNoLink();
        preLink();
        firstLink();
    }
}


function hideTable() {//隱藏表格內容
    for (var i = 0; i < numberRowsInTable+1; i++) {
        theTable.rows[i].style.display = 'none';
    }
    theTable.rows[0].style.display = '';//標題欄顯示
}


function showPage() {//設置當前頁數
    pageNum.innerHTML = page;
}

function inforCount() {//設置總記錄數
    spanTotalInfor.innerHTML = numberRowsInTable;
}

//總共頁數
function pageCount() {
    var count = 0;
    if (numberRowsInTable % pageSize != 0) count = 1;
    return parseInt(numberRowsInTable / pageSize) + count;
}


//顯示鏈接 link方法將相應的文字變成可點擊翻頁的  nolink方法將對應的文字變成不可點擊的
function preLink() { spanPre.innerHTML = "<a href='javascript:pre();'>上一頁</a>"; }
function preNoLink(){ spanPre.innerHTML = "上一頁"; }

function nextLink() { spanNext.innerHTML = "<a href='javascript:next();'>下一頁</a>"; }
function nextNoLink(){ spanNext.innerHTML = "下一頁";}

function firstLink() { spanFirst.innerHTML = "<a href='javascript:first();'>首頁</a>"; }
function firstNoLink(){ spanFirst.innerHTML = "首頁";}

function lastLink() { spanLast.innerHTML = "<a href='javascript:last();'>尾頁</a>"; }
function lastNoLink(){ spanLast.innerHTML = "尾頁";}

//初始化表格
function hide() {
    for (var i = pageSize + 1; i < numberRowsInTable+1 ; i++) {
        theTable.rows[i].style.display = 'none';
    }
    theTable.rows[0].style.display = '';

    inforCount();

    totalPage.innerHTML = pageCount();
    showPage();
    pageNum2.value = page;

    if (pageCount() > 1) {
        nextLink();
        lastLink();
    }

}

hide();

 

 接着是頁面:

      后台返回的數據是包括

  ModelAndView view = new ModelAndView("patient_list_new2");

       view.addObject("pageCount", pageCount);//總頁數
      view.addObject("curPage", page);//當前頁 默認1
  view.addObject("patients", patients);//列表
  view.addObject("patientSize", patients.size());//總數

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE html> 
<html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
       <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <title>Gmeda-受試者管理</title>
        <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">
        <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
        <script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
        <script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
       <style>
        body {
           padding-right:0!important;
        }
      </style>
    </head>
  
    <body>
      
        <div id="content">
            <div class="container">
                <div class="row">
                    <div class="col-md-9 right-content">
                        <div class="table-responsive">
                            <table class="table table-hover hy-table"  id="theTable">
                             <thead>  
                                <tr class="hy-th">
                                    <th>受試者編號</th>
                                    <th>受試者</th>
                                    <th>研究者</th>
                                    <th>隨機化日期</th>
                                    <th>狀態</th>
                                </tr>
                                </thead>  
                            <c:forEach var="p" items="${patients }" varStatus="vs">
                                <tr>
                                    <td>${p.patientNum }</td>
                                    <td>${p.patientName }</td>
                                    <td>${p.creatorName }</td>
                                    <td>${p.randomDate }</td>
                                    <td>${p.groupName}</td>                                        
                                </tr>
                            </c:forEach>
                        </table>
                            </div><!-- /table-responsive -->
         <div class="gridItem" style="padding: 5px; width: 250px; float: left; text-align: left; height: 20px; font-size: 15px;" ><span id="spanTotalInfor">${patientSize}</span> 條記錄&nbsp; &nbsp;     
                                      當前第<span id="spanPageNum">${curPage}</span>&nbsp; &nbsp; &nbsp;<span id="spanTotalPage">${pageCount}</span></div>
        <div class="gridItem" style="margin-left:50px;  padding: 5px; width: 400px; float: left; text-align: center; height: 20px; vertical-align: middle; font-size: 15px;">   
            <span id="spanFirst" >首頁</span> &nbsp; 
            <span id="spanPre">上一頁</span>&nbsp; 
            <span id="spanInput" style="margin: 0px; padding: 0px 0px 4px 0px; height:100%; "><input id="Text1" type="text" class="TextBox" onkeyup="changepage()"   style="height:20px; text-align: center;width:50px" /></span>&nbsp; 
            <span id="spanNext">下一頁</span> &nbsp; 
            <span  id="spanLast">尾頁</span> 
        </div>             
                        
                     
            </div><!-- container -->
        </div><!-- content -->
        
          <script type="text/javascript">
            var theTable = document.getElementById("theTable");
            var txtValue = document.getElementById("Text1").value;
            function changepage() {
                var txtValue2 = document.getElementById("Text1").value;
                if (txtValue != txtValue2) {
                    if (txtValue2 > pageCount()) {

                    }
                    else if (txtValue2 <= 0) {

                    }
                    else if (txtValue2 == 1) {
                        first();
                    }
                    else if (txtValue2 == pageCount()) {
                        last();
                    }
                    else {
                        hideTable();
                        page = txtValue2;
                        pageNum2.value = page;

                        currentRow = pageSize * page;
                        maxRow = currentRow - pageSize;
                        if (currentRow > numberRowsInTable) currentRow = numberRowsInTable;
                        for (var i = maxRow; i < currentRow; i++) {
                            theTable.rows[i].style.display = '';
                        }
                        if (maxRow == 0) { preText(); firstText(); }
                        showPage();
                        nextLink();
                        lastLink();
                        preLink();
                        firstLink();
                   }

                    txtValue = txtValue2;
                }
            }
            
    </script>
     <script type="text/javascript" src="/js/pagging.js"></script>
    </body>
</html>

一定要注意: pagging.js的位置js/Pagging.js

注意:將pagging.js的文件引入項目時候必須在分頁div 下面引入,否則會報錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM