layUI:數據表格內的分頁功能實現詳解

ssm+layui實現layui的數據表格的內置分頁功能,效果如上圖。

前端JS代碼(進行渲染):

<script>
            table.render({
            elem: '#test'
            , url: '/blog/getCategory'
            , cols: [[{field: 'id', title: 'ID', templet: '#index', width: 40}
                , {field: 'leibie', title: '類別'}
                , {field: 'time', title: '創建時間'}
                , {field: 'annotation', title: '備註'}
                , {field: 'delete', title: '操作', toolbar: '#barDemo', align: 'center'}
            ]]
            , parseData: function (res) { //res 即爲原始返回的數據
                console.log("成功"+res.status+";=="+res.message+";"+res.total);
                return {
                    "code": res.status, //解析接口狀態
                    "msg": res.message, //解析提示文本
                    "count": res.total, //解析數據長度
                    "data": res.data //解析數據列表
                };
            }
            , page:true
            ,limit:20
            ,limits:[5,10,20,30]
        });
</script>

 

思路講解及踩坑:

在你的table數據表格渲染成功,且打開了page後(就是page:true)。接下來要開始對分頁模塊裏面的參數進行設置了,但是在數據表格內打開的分頁與單獨的分頁模塊laypage有些不同。

     如上圖,當你一開始渲染成功是,顯示的分頁效果是這樣的,不能跳轉其他頁碼,計算總條數也是顯示爲“共0條”,是靜態的分頁效果。一開始我是懵的,不知道怎麼去設置這裏,讓它變成動態的。

     這個時候你需要打開官方文檔,你可以看到有個parseData的函數,它是“數據格式解析的回調函數,用於將返回的任意數據格式解析成 table 組件規定的數據格式”。什麼意思呢?在你前面進行數據表格進行渲染時,js會根據你的url地址發起請求(如下圖所示),並返回後臺傳過來的數據,然後對這個數據進行解析。

發起請求,res就是返回數據。我返回的數據格式如下圖,可以看到,這個函數把res裏面的對應數據賦給了“code”,"msg","count","data"四個變量。code代表了返回狀態,必須爲0,count就是你的數據總條數,我這裏就是總共有多少種分類,data在我這裏就代表了每個條目裏面的數據。當這些值返回以後,分頁自然就變成動態的了。

下面說下,後臺是怎麼實現返回數據的:

事實上,當你的數據表格渲染的時候,自發送的請求自動迴帶上兩個參數page(代表當前是第幾頁)和limit(該頁只能展示多少條數據),如下圖

在controller層接收這兩個參數,如下圖。這裏我在下圖第三個紅框裏面的操作,是爲了根據每一次的請求的page和size來返回相應的數據(比如page= 2,size= 10,就是說你要在第二頁展示10條數據,所以返回數據應該是在數據庫中的第10——19條)

接下來我創建了一個類,用來存儲需要返回的數據,代碼如下


public class ResultMap<T> {

    private int status;
    private String message;
    private int total;
    private T data;

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "ResultMap{" +
                "status=" + status +
                ", message='" + message + '\'' +
                ", total=" + total +
                ", data=" + data +
                '}';
    }

    public ResultMap(){

    }

    public ResultMap(int status,String message,int total,T data){
        this.status = status;
        this.message = message;
        this.total = total;
        this.data = data;
    }
}

將你查詢到的數據存到上面這個勒種,再返回給前端即可。

寫的有不足之處,還請各位指正。

補充其它層代碼:

service層:

impl:

mapper

mapper.xml

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章