1. 程式人生 > >JQuery 常用積累(二)Pagination 分頁元件

JQuery 常用積累(二)Pagination 分頁元件

http://www.cnblogs.com/java-class/p/4542154.html

     分頁元件幾乎是一般網站都會涉及到的元件,網上有很多這樣的外掛,自己挑來跳去選擇了這一款,功能強大,可擴充套件性比較強,而且幕後的工程師一直在完善這個外掛,不廢話了,上乾貨.

(模擬場景:商店網站,俺要根據使用者選擇的查詢條件,來查詢資料庫,並展示到前臺)

回到頂部

1.JSP頁面

如果你的web專案前臺是基於bootstrap,js只需要引入2個js:

<r:script path="/style/js/JqueryPagination/jquery.pagination-1.2.4.js" />
<r:script path="/style/js/JqueryPagination/jquery.pagination-1.2.4.min.js" />

引入一個css:

<r:style path="/style/css/jquery.pagination.css" />

頁面元素:

<div id="spbpage" class="m-pagination"></div>

回到頂部

2.JS 控制

a.組織要查詢的商品的特徵和限制條件,條件來自於頁面使用者輸入或者是下拉框選擇,組織為一個Object,類似與java 中的map;

複製程式碼
var cxtj = {
        lx   : $("#splx").val(),     商品型別
        scrq : $("#spscrq").val(),   商品生產日期
        ys   : $(
"#spys").val(), 商品顏色 cc : $("#spcc").val(), 商品尺寸 sccj : $("#sccj").val() 生產廠家 };
複製程式碼

b.定義一個全域性的變數count,因為我使用的時候,出現了個問題,當變更查詢條件後,分頁元件需要重新生成;

var count = 1;
count++; 
count > 2 ? $("#sppage").page('destroy') : '

c.前端總體程式碼如下:

具體的方法引數這裡就不多言了,官方Demo 中寫的比較詳細

複製程式碼
var count = 1;
function query() { var cxtjobj = { lx : $("#splx").val(), 商品型別 scrq : $("#spscrq").val(), 商品生產日期 ys : $("#spys").val(), 商品顏色 cc : $("#spcc").val(), 商品尺寸 sccj : $("#sccj").val() 生產廠家 }; count++; //count 計數的作用,為當第二次以後點選請求時,先銷燬分頁元件 count > 2 ? $("#sppage").page('destroy') : ''; $("#sppage").page({ remote : { url : 'xxxxxx後臺ajax 請求類地址@RequestMapping', pageIndexName : 'pageIndex', //請求引數,當前頁數 pageSizeName : 'pageSize', //請求引數,每頁數量 totalName : 'total', //指定返回資料的總資料量的欄位名 params : { cxtj : JSON2.stringify(cxtjobj), }, callback : function(data, pageIndex) { if (data.success) {
                    //在這裡,你可以遍歷你返回回來的值,遍歷資料的方法,取決與你後臺組織好,傳遞過來的資料結構
                    //返回Map 【data.key 就可以取到 value】如下:
                    fhxxlist = data.fhxxlist;
                    
                    //返回 List<Map<String,Object>> 或者 List,遍歷方法如下:
                    $.each(fhxxlist, function(i, fhxx) {
                    });
                    
                } else {
                    hideLoading();
                    showAlert($(".container-fluid"), "提示:", data.error, "warring", true);
                }
            },
        }    //這裡你可以編寫響應三種不同的分頁元件後需要處理的邏輯,也就是回撥函式
            }).on("pageClicked", function (event, pageIndex) {
                 $("#eventLog").append('EventName = pageClicked , pageIndex = ' + pageIndex + '<br />');
             }).on('jumpClicked', function (event, pageIndex) {
                 $("#eventLog").append('EventName = jumpClicked , pageIndex = ' + pageIndex + '<br />');
             }).on('pageSizeChanged', function (event, pageSize) {
                 $("#eventLog").append('EventName = pageSizeChanged , pageSize = ' + pageSize + '<br />');
             });
}
複製程式碼 回到頂部

3.後臺java類進行處理的兩個公共方法

a.分頁元件傳遞一個 pagesize 和 pageindex ,需要返回datas 和 total;

b.1)方法根據 countsql 查詢出來的總條數, pageindex 來計算出總共需要多少頁,並返回一個二維陣列,沒有用List是因為我覺得,二維資料已經夠用了;

   2)方法將計算出來的二維陣列,根據請求的 pageindex ,取出一個開始到結束的區間,並且在這個區間裡面查詢需要展示到前臺的資料集合,返回給前臺;

c.前臺頁面,每觸發一次事件(pageClick,jumpClick,pageSizeChange)或者變更查詢條件,都會請求一次後臺,返回特定的資料集合;

d.不同的地方是(pageClick,jumpClick,pageSizeChange)事件,始終是一個分頁元件,而變更查詢條件會銷燬原來的元件,重新初始化;

/**
      * 描述:根據 countsql 查詢出來的總條數, pageindex 來計算出總共需要多少頁
      */
    public int[][] getPagearray(int total,int pagesize){        
        int page = (total%pagesize == 0 ? total/pagesize:total/pagesize + 1);
        logger.info("total ====" + total + " pagesize===" + pagesize + " page====" + page);
        int[][] pagearray = new int[page][pagesize];
        int j = 1;
        for(int i = 0;i<page;i++){
           for (int k = 0;k<pagesize;k++){
               pagearray[i][k] = j;
               j++;               
           }
        }
        return pagearray;
    }
    
    /**
      * 描述:根據請求的 pageindex ,取出一個開始到結束的區間,並且在這個區間裡面查詢需要展示到前臺的資料集合,返回給前臺
      */
    public Map<String,Object> createPagination(String countsql,String cxxxsql,String retname,int pageSize,int pageIndex){           
        Map <String,Object> result = new HashMap<String,Object>();
        List<Map<String, Object>> countlist;
        try {
            countlist = selecter.select2list(countsql);
            int count = Integer.parseInt(countlist.get(0).get("count").toString());
          if(count == 0){                 
                 result.put("error", "沒有查詢到資訊,請變更查詢條件!");
                 result.put("total", 0);
             }else{
              int[][] pagearray = getPagearray(count,pageSize);
                    String jtxxsql = "SELECT * " +
                          "  FROM (SELECT P.*, ROWNUM RID " +
                          "          FROM (" + cxxxsql + ") P) " +
                          " WHERE RID BETWEEN "+ pagearray[pageIndex][0] +" AND "+ pagearray[pageIndex][pageSize - 1] ;  
                 List<Map<String,Object>> cxxxlist = selecter.select2list(jtxxsql);
                 result.put("success",true);
                 result.put("total",count);
                 result.put("data", pagearray[pageIndex]);
                 result.put(retname, cxxxlist);
            }
        } catch (DataOptException e) {
            e.printStackTrace();
        }
        return result;
    }

相關推薦

JQuery 常用積累Pagination 元件

http://www.cnblogs.com/java-class/p/4542154.html      分頁元件幾乎是一般網站都會涉及到的元件,網上有很多這樣的外掛,自己挑來跳去選擇了這一款,功能強大,可擴充套件性比較強,而且幕後的工程師一直在完善這個外掛,

jQuery常用外掛維碼顯示

為什麼要用二維碼 原因多了去了,移動端和PC端但凡都支援,就免不了響應式,但凡有響應式,就少不了PC到移動端的頁面跳轉,二維碼是最方便的“傳遞”工具 二維碼顯示方式 二維碼內部無非就是黑

RequireJS入門指南-vue模組抽離

vue實現分頁,模組化實現的碎碎念。 這篇講一下我是如何在專案中抽離出分頁模組的。 這段時間做的專案讓我很頭疼,因為前面寫程式碼的時候沒有考慮很多東西,寫到後面就發現程式碼越來越重。 而且在不同頁

Emacs月月積累:視窗、緩衝區和常用模式切換

1 視窗和緩衝區切換 視窗 C-x 0:關閉當前視窗 C-x 1:關閉當前視窗以為的其他視窗 C-x 2:水平分割視窗 C-x 3:垂直分割視窗 C-x 4 0:關閉當前視窗和緩衝 C-x 4 b:在另

面試提高及日常學習積累——數據庫篇

網絡 sql語句 時間函數 keyword 隱藏 format 循環 運行時 壓力 這一篇主要講mysql的一些積累和學習體會。 一:數據庫基礎知識 Innodb引擎 Innodb引擎提供了對數據庫ACID事務的支持,並且實現了SQL標準的四種隔離級別,關於數據庫事務

第79天:jQuery事件總結

ide 是什麽 導致 另一個 prevent 移除 prop fun 限制 上一篇講到jQuery中的事件,深入學習了加載DOM和事件綁定的相關知識,這篇主要深入討論jQuery事件中的合成事件、事件冒泡和事件移除等內容。   一、合成事件   jQuery有

Linux常用命令

swd name unalias /etc/ 忘記 man 所有 類型 超過 1,alias 別名 簡化復雜命令的輸入 alias myls=‘ls -lh‘ #定義別名 unalias m

HTML&javaSkcript&CSS&jQuery&ajax

log height query 使用 get 元素 .com row center 一、HTML 1、標簽<a href="http:www.baidu.com">This is a link </a> <img s

R語言中常用

json數據格式 預測 數據 環境 地圖 spec pdf 大氣 source 數據導入 以下R包主要用於數據導入和保存數據feather:一種快速,輕量級的文件格式。在R和python上都可使用readr:實現表格數據的快速導入。中文介紹可參考這裏readxl:讀取Mic

常用

比較 -s ringbuf sem 構造 lac pty 沒有 構建 四、String類概述及其構造方法 概述 字符串是由多個字符組成的一串數據(字符序列)字符串可以看成是字符數組 構造方法 public String()public String(byte[] bytes

ADB常用命令

connect span dci 選擇 對象 http 重新 ice jpg 參考 http://adbshell.com/commands 常用命令 查看adb 版本 adb version 打印所有附加模擬器/設備的列表 adb devices 設備序列號

spark RDD常用運算元

- reduceByKey 演算法解釋 reduceByKey 是比 combineByKey 更簡單的一種情況,只是兩個值合併成一個值,( Int, Int V)to (Int, Int C),比如疊加。所以 createCombiner reduceBykey 很簡

Docker之常用命令

這篇部落格就不扯皮了,簡單粗暴地貼上自己整理的一份Docker常用命令。 docker search ** // 查詢映象 docker pull nginx // 載入映象 # -a 拉取所有tagged映象 # --disable-content-trust 忽略映象

git的常用指令 git add -A 、git add . 和 git add -u

git add . :他會監控工作區的狀態樹,使用它會把工作時的所有變化提交到暫存區,包括檔案內容修改(modified)以及新檔案(new),但不包括被刪除的檔案。 git add -u :他僅監控已經被add的檔案(即tracked file),他會將被修改的檔案提交到暫存區。add -u 不會提交新檔

XMPP常用協議

這一篇主要介紹傳送訊息,傳送和接收到的XML格式。 8. 傳送文字訊息 因為Android 中直接在Message 根目錄擴充套件多個節點比較麻煩,所以我們這邊只擴充套件了一個節點,然後在這個節點內部新增多個子節點來傳遞內容。 傳送訊息時,如果對方離線時,body又為空,則對

嵌入式 知識積累 之 三個學習階段

嵌入式LININX開發第一學習階段,主要打好基礎,學好C程式設計,Linux系統程式設計。 1、C語言程式設計基礎 2、嵌入式開發基礎:Linux概述安裝,shell命令,vim編輯器,GCC,GDB,Makefile,交叉開發環境構建 3、嵌入式Linux系統程式設計:shell程式設

Linux終端常用命令

grep命令: 作用:在檔案中搜索字串匹配的行並輸出 語法:grep[-cinv]’搜尋的字串’ filename -v :反向選擇,顯示不包含匹配文字的所有行 eg: grep -v “^#” /etc /inittab 表示含義:顯示inittab檔

jQuery 常用方法

1.動態新增元素: $("#parentid").append("<img id='oImg' class='z-index' src='imgURL'>");//父元素#parentid新增子元素#oImg   2.給新增的元素新增響應事件: $(sele

Linux--常用操作

1、檢視作業系統的版本 # lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.4.1708 (

jQuery使用之

jQuery事件 一,頁面載入完成執行事件 語法1:$(document).ready(function(){    .....   }); 語法2:$(function(){  ...  }); 與window.onload的區別: (1)window