欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

BootStrap Table實(shí)現(xiàn)server分頁序號(hào)連續(xù)顯示功能(當(dāng)前頁從上一頁的結(jié)束序號(hào)開始)

 更新時(shí)間:2017年09月12日 11:30:56   作者:youand_me  
這篇文章主要介紹了BootStrap Table實(shí)現(xiàn)server分頁序號(hào)連續(xù)顯示功能(當(dāng)前頁從上一頁的結(jié)束序號(hào)開始),需要的朋友可以參考下

前言

  • 在使用bootstrap table的時(shí)候難免會(huì)用到分頁,分頁它提供了兩種方式:client客戶端分頁、server服務(wù)端分頁兩種方式。
  • 在項(xiàng)目中一般是不用client分頁的,一般表格數(shù)據(jù)量大,用client分頁會(huì)導(dǎo)致緩存爆炸,所以我們選擇server分頁。
  • 存在即合理,client也是可以用的(數(shù)據(jù)量特別少的時(shí)候),相對(duì)于server方式,它的分頁序號(hào)是自動(dòng)連續(xù)的。而server方式分頁的序號(hào)就不連續(xù)的了(每一頁都是從1開始,而不是從上一頁的結(jié)束序號(hào)開始),本文就著重解決這個(gè)問題。

原始分頁結(jié)果

  • client分頁,使用bootstrap table的formatter中的index索引值可以使得序號(hào)是連續(xù)的,上圖:

這里寫圖片描述

這是第1頁的序號(hào),為1-4。

這里寫圖片描述

這是第2頁的序號(hào),為5-8。

  • server分頁,由于缺乏當(dāng)前頁的位置pageNumber和每頁的大小pageSize,所以無法確定索引值,用formatter返回index就是只有當(dāng)前頁的索引。

這里寫圖片描述

這是server分頁的第1頁,序號(hào)為1-4。

這里寫圖片描述

這是server分頁的第5頁,序號(hào)也為1-4。

解決步驟

出現(xiàn)這個(gè)問題的原因是什么呢,由于我們使用的formatter返回的index參數(shù),這個(gè)參數(shù)是表格的索引,client的所有n條總數(shù)據(jù)都在客戶端,index就為1-n,而server分頁每次服務(wù)器只返回的是當(dāng)前頁的數(shù)據(jù)到客戶端,所以index就只有1-pageSize,pageSize為一頁的數(shù)據(jù)量,所以就出現(xiàn)這個(gè)問題了。

針對(duì)server服務(wù)器只返回一頁的數(shù)據(jù)的原因?qū)е旅看畏摰男蛱?hào)都從1開始的問題,那么我們就需要把服務(wù)端和客戶端的頁面數(shù)據(jù)關(guān)聯(lián)起來,所以我們?cè)谠嫉膄ormatter的基礎(chǔ)上修改,讓它傳遞這個(gè)參數(shù)就ok了。

首先我們看boostrap table的js源碼,可以看到一些內(nèi)部函數(shù)的寫法,如:

 BootstrapTable.prototype.showRow = function (params) {
  this.toggleRow(params, true);
 };

那么我們可以自己定義一個(gè)功能函數(shù)嗎?答案是肯定的,我們也照著寫一個(gè)返回我們需要的索引值的函數(shù)。定義如下:

 BootstrapTable.prototype.getPage = function (param) {
  return this.options.pageSize * this.options.pageNumber + 1;
 }

我們能寫這個(gè)函數(shù)傳遞索引參數(shù)的原因是,pageSize和pageNumber本身就是bootstrap table的內(nèi)部參數(shù),全部都集成在options中,所以你有這個(gè)參數(shù)我才能寫函數(shù)返回這個(gè)值。

寫好函數(shù)還得把這個(gè)函數(shù)寫進(jìn)內(nèi)部函數(shù)列表中,不然也用不了,如下把getIndex像它原來的函數(shù)那樣插入進(jìn)去(第四行):

var allowedMethods = [
  'getOptions',
  'getSelections', 'getAllSelections', 'getData', 'getIndex',
  'load', 'append', 'prepend', 'remove', 'removeAll',
  'insertRow', 'updateRow', 'updateCell', 'updateByUniqueId', 'removeByUniqueId',
  'getRowByUniqueId', 'showRow', 'hideRow', 'getHiddenRows',
  'mergeCells',
  'checkAll', 'uncheckAll', 'checkInvert',
  'check', 'uncheck',
  'checkBy', 'uncheckBy',
  'refresh',
  'resetView',
  'resetWidth',
  'destroy',
  'showLoading', 'hideLoading',
  'showColumn', 'hideColumn', 'getHiddenColumns', 'getVisibleColumns',
  'showAllColumns', 'hideAllColumns',
  'filterBy',
  'scrollTo',
  'getScrollPosition',
  'selectPage', 'prevPage', 'nextPage',
  'togglePagination',
  'toggleView',
  'refreshOptions',
  'resetSearch',
  'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows',
  'updateFormatText'
 ];

這樣我們就可以在表中使用,在formatter中使用了getIndex方法,實(shí)現(xiàn)了分頁序號(hào)的連續(xù)(editable: {…}是行編輯,請(qǐng)查看我另一篇博客):

$("tb_departments").bootstrapTable({
   method: 'post',      //請(qǐng)求方式
   height: 500,
   toolbar: '#toolbar',    //工具按鈕用哪個(gè)容器
   striped: true,      //是否顯示行間隔色
   cache: false,      //是否使用緩存,默認(rèn)為true,所以一般情況下需要設(shè)置一下這個(gè)屬性(*)
   pagination: true,     //是否顯示分頁
   sortable: true,      //是否啟用排序
   sortOrder: "asc",     //排序方式
   sidePagination: "server",   //分頁方式:client客戶端分頁,server服務(wù)端分頁
   pageNumber: 1,      //初始化加載第一頁,默認(rèn)第一頁
   pageSize: 4,      //每頁的記錄行數(shù)(*)
   pageList: [4, 20, 25, 30],  //可供選擇的每頁的行數(shù)(*)
   //search: true,      //是否顯示表格搜索,此搜索是客戶端搜索,不會(huì)進(jìn)服務(wù)端,所以,個(gè)人感覺意義不大
   strictSearch: true,
   //showPaginationSwitch: true,
   showExport: true,
   exportDataType: "all",
   showExport: true, //是否顯示導(dǎo)出按鈕
   buttonsAlign:"right", //按鈕位置
   exportTypes:[ 'csv', 'txt', 'excel', 'pdf'], //導(dǎo)出文件類型
   Icons:'glyphicon-export',
   showColumns: true,     //是否顯示所有的列
   showToggle:true,     //是否顯示詳細(xì)視圖和列表視圖的切換按鈕
   showExportAll:true,     //是否顯示全部導(dǎo)出按鈕
   showRefresh: false,     //是否顯示刷新按鈕
   minimumCountColumns: 1,    //最少允許的列數(shù)
   clickToSelect: true,    //是否啟用點(diǎn)擊選中行
   cardView: false,     //是否顯示詳細(xì)視圖
   detailView: false,     //是否顯示父子表
   showHeader: true,
   onEditableSave: function (field, row, oldValue, $el) {
    $.ajax({
     success: function (data, status) {
      if (status == "success") {
       alert("編輯成功");
      }
     },
     error: function () {
      alert("Error");
     },
     complete: function () {
     }
    });
   },
   columns: [
    {
     title: '編號(hào)',//標(biāo)題
     formatter: function (value, row, index) {
      return $("tb_departments").bootstrapTable("getIndex");
     }
    },
    {
     align: "left",//水平居中
     halign: "left",//垂直居中
     field: "vehplate",
     title: "車牌號(hào)碼",
     editable: {
      type: 'text',
      title: "車牌號(hào)碼",
      noeditFormatter: function (value,row,index) {
       var result={filed:"vehplate",value:value};
       return result;
      },
      validate: function (value) {
       if ($.trim(value) == '') {
        return '車牌號(hào)碼不能為空!';
       }
      }
     }
    },{
     align: "left",
     halign: "left",
     field: "price",
     sortable:true,
     title: "原值(萬元)",
     editable: {
      type: 'text',
      title: "原值(萬元)",
      noeditFormatter: function (value,row,index) {
       var result={filed:"price",value:value,class:"badge bg-green",style:"padding:5px 10px;"};
       return result;
      }
     }
    },
    {
     align: "left",
     halign: "left",
     field: "netvalue",
     sortable:true,
     title: "凈值(萬元)",
     editable: {
      type: 'text',
      title: "凈值(萬元)",
      noeditFormatter: function (value,row,index) {
       var result={filed:"netvalue",value:value,class:"badge bg-orange",style:"padding:5px 10px;"};
       return result;
      }
     }
    },
    {
     align: "left",
     halign: "left",
     field: "accumulatedmileage",
     sortable:true,
     title: "累計(jì)里程",
     editable: {
      type: 'text',
      title: "累計(jì)里程",
      noeditFormatter: function (value,row,index) {
       var result={filed:"accumulatedmileage",value:value};
       return result;
      }
     }
    },
    {
     align: "left",
     halign: "left",
     field: "accumulateddepreciation",
     sortable:true,
     title: "累計(jì)折舊(萬元)",
     editable: {
      type: 'text',
      title: "累計(jì)折舊(萬元)",
      noeditFormatter: function (value,row,index) {
       var result={filed:"accumulateddepreciation",value:value};
       return result;
      }
     }
    },
    {
     align: "left",
     halign: "left",
     field: "vehClass",
     title: "車型"
    },
    {
     align: "left",
     halign: "left",
     field: "vehtype1Desc",
     title: "車類"
    }, {
     align: "left",
     halign: "left",
     field: "vehtype2Desc",
     //width: 100,
     title: "車類明細(xì)"
    }
   ],
   onPageChange:function(number, size)
   {
    //設(shè)置在分頁事件觸發(fā)時(shí),傳遞分頁參數(shù)給后臺(tái),重新加載數(shù)據(jù)
    me.queryBaseParam.limit=size;
    me.queryBaseParam.start=number;
    me.ajaxGetData();
   },
   onSort: function (name, order) {
    //傳遞參數(shù)給后臺(tái)進(jìn)行排序
    me.queryBaseParam.sort=name;
    me.queryBaseParam.order=order;
    me.ajaxGetData();
   }
  });

最后的結(jié)果和client分頁的序號(hào)是一樣的。

總結(jié)

以上所述是小編給大家介紹的BootStrap Table實(shí)現(xiàn)server分頁序號(hào)連續(xù)顯示功能(當(dāng)前頁從上一頁的結(jié)束序號(hào)開始),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 小程序云函數(shù)調(diào)用API接口的方法

    小程序云函數(shù)調(diào)用API接口的方法

    這篇文章主要為大家詳細(xì)介紹了小程序云函數(shù)調(diào)用API接口的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • JavaScript中的內(nèi)存泄漏的原因

    JavaScript中的內(nèi)存泄漏的原因

    本文主要介紹了聊一聊JavaScript中的內(nèi)存泄漏,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • JavaScript延遲加載之a(chǎn)sync與defer的應(yīng)用

    JavaScript延遲加載之a(chǎn)sync與defer的應(yīng)用

    這篇文章主要介紹了JavaScript延遲加載之a(chǎn)sync與defer的應(yīng)用場(chǎng)景與使用區(qū)別的介紹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • 微信小程序視圖容器和基本內(nèi)容組件圖文詳解

    微信小程序視圖容器和基本內(nèi)容組件圖文詳解

    小程序提供了豐富的基礎(chǔ)組件給開發(fā)者,開發(fā)者可以像搭積木一樣,組合各種組件拼合成自己的小程序,下面這篇文章主要給大家介紹了關(guān)于微信小程序視圖容器和基本內(nèi)容組件的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 基于BootStrap Metronic開發(fā)框架經(jīng)驗(yàn)小結(jié)【三】下拉列表Select2插件的使用

    基于BootStrap Metronic開發(fā)框架經(jīng)驗(yàn)小結(jié)【三】下拉列表Select2插件的使用

    本文主要給大家介紹在編輯頁面中常用到的控件Select2,這個(gè)控件可以更加豐富傳統(tǒng)的Select下拉列表控件,提供更多的功能和更好的用戶體驗(yàn),
    2016-05-05
  • javascript驗(yàn)證只能輸入數(shù)字和一個(gè)小數(shù)點(diǎn)示例

    javascript驗(yàn)證只能輸入數(shù)字和一個(gè)小數(shù)點(diǎn)示例

    使用javascript限制只能輸入數(shù)字和一個(gè)小數(shù)點(diǎn),在某些情況下還是比較使用的,下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下
    2013-10-10
  • 顯示js對(duì)象所有屬性和方法的函數(shù)

    顯示js對(duì)象所有屬性和方法的函數(shù)

    顯示js對(duì)象所有屬性和方法,從網(wǎng)上整理了不少,大家可以看下原理都是差不多的。
    2009-10-10
  • JS解析json數(shù)據(jù)并將json字符串轉(zhuǎn)化為數(shù)組的實(shí)現(xiàn)方法

    JS解析json數(shù)據(jù)并將json字符串轉(zhuǎn)化為數(shù)組的實(shí)現(xiàn)方法

    json數(shù)據(jù)在ajax實(shí)現(xiàn)異步交互時(shí)起到了很重要的作用,他可以返回請(qǐng)求的數(shù)據(jù),然后利用客戶端的js進(jìn)行解析,這一點(diǎn)體現(xiàn)出js的強(qiáng)大,本文介紹JS解析json數(shù)據(jù)并將json字符串轉(zhuǎn)化為數(shù)組的實(shí)現(xiàn)方法,需要了解的朋友可以參考下
    2012-12-12
  • JavaScript獲取URL匯總

    JavaScript獲取URL匯總

    在WEB開發(fā)中,許多開發(fā)者都比較喜歡使用javascript來獲取當(dāng)前url網(wǎng)址,本文就此為大家總結(jié)一下比較常用獲取URL的javascript實(shí)現(xiàn)代碼
    2015-06-06
  • 數(shù)組Array的排序sort方法

    數(shù)組Array的排序sort方法

    下面小編就為大家?guī)硪黄獢?shù)組Array的排序sort方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02

最新評(píng)論