layPage分頁,參照官網實例寫了一份。如下:
function InitDataByPage(curr) { var pageSize = 5; $.getJSON("InitDataByPage", { "CFG_Table": cfg_table, "pageindex": curr, "pagesize": pageSize }, function (result) { //BindDataToTableByPage(result);//將獲取到的數據動態加載到table var coun = result[0]._pagenum;//總數據條數 var pagecount = coun % pageSize == 0 ? coun / pageSize : coun / pageSize + 1;//計算多少頁 laypage({ cont: 'lay_page', //容器。值支持id名、原生dom對象,jquery對象。 skin: '#fb771f', pages: pagecount, //通過后台拿到的總頁數 curr: curr, //初始化當前頁 groups: 10,//連續顯示頁數 skip:true,//是否跳頁 first: '|<', //將首頁顯示為數字1,。若不顯示,設置false即可 last: '>|', //將尾頁顯示為總頁數。若不顯示,設置false即可 prev: '<', //若不顯示,設置false即可 next: '>', //若不顯示,設置false即可 jump: function (obj, first) { //觸發分頁后的回調 if (!first) { //點擊跳頁觸發函數自身,並傳遞當前頁:obj.curr var pageindex = obj.curr - 1; $.getJSON("InitDataByPage", { "CFG_Table": cfg_table, "pageindex": pageindex, "pagesize": pageSize }, function (result) { BindDataToTableByPage(result); }) } } }); }) }
后台SQL查詢語句:
var beginnum = 0; if (pageindex != 0) { beginnum = pageindex * pagesize; } var endnum = beginnum + pagesize; string sqltxt = "select tnum._pagenum, * from (select row_number() over(order by GUID) as rowNum, * from "+CFG_Table+ ") as t , (select COUNT(1) as _pagenum from "+CFG_Table+") as tnum
where t.rowNum between " + beginnum + " and "+ endnum;
通過select COUNT(1) from Table 獲取總條數並返回給前台"var coun = result[0]._pagenum;//總數據條數"。
pageindex后台是從0開始,而layPage獲取是從1開始,故前台對obj.curr進行減一操作以和后台相符。
單頁面可以指定表名,不需要使用cfg_table傳遞進去。
BindDataToTableByPage()為我頁面加載數據的方法、具體加載各自會有不同,具體不再粘出。
新手上路,沒有考慮性能是否可行、僅僅在少量數據下測試。歡迎指正。