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()为我页面加载数据的方法、具体加载各自会有不同,具体不再粘出。
新手上路,没有考虑性能是否可行、仅仅在少量数据下测试。欢迎指正。