jquery-easyui分页组件的用法
2012-12-11 17:51
225 查看
项目进行到迭代二的开发和测试阶段,发现一个比较隐藏的bug,那就是分页组件的使用不当问题。
问题现象:
多页面新增数据后,点击下一页数据显示没有问题,但是当前页,总页数的计算出了问题。
原因分析:
show data后,没有重新加载分页控件导致,因为totalRecords是重新计算出来的。
解决方案及代码:
show data后重新加载分页控件。代码如下:
1,页面初始化
2,加载分页组件核心函数
3,数据展现后重新加载分页控件
总结:pageNumber,pageSize是分页组件根据totalRecords自动计算出来的,不需自己计算。
问题现象:
多页面新增数据后,点击下一页数据显示没有问题,但是当前页,总页数的计算出了问题。
原因分析:
show data后,没有重新加载分页控件导致,因为totalRecords是重新计算出来的。
解决方案及代码:
show data后重新加载分页控件。代码如下:
1,页面初始化
$(document).ready(function(){ //初始化分页组件 var total=${total}; if(total == "0"){ var loadingMeg = "<tr class='support_white'><td colspan='12' height='20' align='center'><bean:message key='supportrecover.webduty.nodata'/></td></tr>"; $("#dataTbody").html(loadingMeg); } ajaxPagination(total); });
2,加载分页组件核心函数
function ajaxPagination(totalRecords){ $("#ajaxPagination").pagination({ total: totalRecords, // totalRecord(总记录数) 需要在进入页面时,在action中赋值 onSelectPage: function(pageNumber, pageSize){ //分页组件显示加载数据状态 $(this).pagination('loading'); //url为请求路径,注意需要带 pageNumber、ajaxPageSize参数。如果有查询参数,拼接上。 var form = document.queryForm; form.current_page.value = pageNumber; form.page_size.value = pageSize; var regionSelects = $("#q_region2").val(); var regSelects = $("#q_reg2").val(); var roles = $("#q_role2").val(); var gtacs = $("#q_gtac2").val(); var dutyDateStarts = $("#q_dutyDateStart2").val(); var dutyDateEnds = $("#q_dutyDateEnd2").val(); var productLines = $("#q_productLine2").val(); var productFamilys = $("#q_productFamily2").val(); var products = $("#q_productID2").val(); //地区部为空的时候,把代表处也至空 if(regSelects == "null" || regSelects == null) { regSelects = ""; } //产品线为空的时候,把产品族也至空 if(productFamilys == "null" || productFamilys == null) { productFamilys = ""; } //地区部为空的时候,把代表处也至空 if(productFamilys == "") { products = ""; $("#q_cheakProducts").html(""); } //判断日期控件 var q_isSuss = q_vilidate(); if(!q_isSuss) { return; } var loadingMeg = "<tr class='support_white'><td colspan='12'><img width='12' height='12' src='<%=request.getContextPath() %>/images/loading.gif'>loading...</td></tr>"; //清空表格tbody内容 $("#dataTbody").empty(); //表格显示加载数据状态 $("#dataTbody").html(loadingMeg); $.ajax({ url : "/SupportRecover/pages/webduty/webDuty.do?actionFlag=ajaxGetWebDuty_all", data: { "regionSelect":regionSelects, "regSelect":regSelects, "role":roles, "dutyDateStart":dutyDateStarts, "dutyDateEnd":dutyDateEnds, "productLine":productLines, "productFamily":productFamilys, "product":products, "gtac":gtacs, "current_page":pageNumber, "page_size":pageSize }, type : "POST", dataType : 'json', success: function(data) { showJsonData(data); }, error:function() { forwardToLogin(); } }); $("#ajaxPagination").pagination('loaded'); } }); }
3,数据展现后重新加载分页控件
function showJsonData(data){ var totalRecords = 0; var dataStr = ""; if(data != null && data != ""){ var list = data.pageWebDuty.webDutyList; var jsonLst = eval('(' + list + ')'); totalRecords=eval(data.pageWebDuty.totalRecords); //alert(jsonLst.length); if(jsonLst != "" && jsonLst != "undefined"){ for(var i=0;i<jsonLst.length;i++){ var commonName=jsonLst[i].commonName; var dutyRoleName=jsonLst[i].dutyRoleName; var gtacName=jsonLst[i].gtacName; var regionName =""; var repName =""; if(nls == "zh") { regionName = jsonLst[i].regionNameCn; repName = jsonLst[i].repNameCn; }else{ regionName = jsonLst[i].regionNameEn; repName = jsonLst[i].repNameEn; } var zonedescription=jsonLst[i].zonedescription; var dutyDateStart=jsonLst[i].dutyDateStart; var dutyDateEnd=jsonLst[i].dutyDateEnd; var dutyTimeStart=jsonLst[i].dutyTimeStart; var dutyTimeEnd=jsonLst[i].dutyTimeEnd; var productLineName = ""; var productFamilyName = ""; var productName = ""; if(nls == "zh") { productLineName = jsonLst[i].productLineNameCn; productFamilyName = jsonLst[i].productFamilyNameCn; productName = jsonLst[i].productNameCn; }else{ productLineName = jsonLst[i].productLineNameEn; productFamilyName = jsonLst[i].productFamilyNameEn; productName = jsonLst[i].productNameEn; } var webDutyId = jsonLst[i].webDutyId; dataStr = dataStr +"<tr id='"+webDutyId+"'>" + "<td class='spt_td_ellipsis' title='"+commonName+"'>"+commonName+" </td>" + "<td class='spt_td_ellipsis' title='"+dutyRoleName+"'>"+dutyRoleName+"</td>" //+ "<td class='spt_td_ellipsis' title='"+gtacName+"'>"+gtacName+"</td>" + "<td class='spt_td_ellipsis' title='"+regionName+"'>"+regionName+"</td>" + "<td class='spt_td_ellipsis' title='"+repName+"'>"+repName+"</td>" + "<td class='spt_td_ellipsis' align='right' title='"+dutyDateStart+"'>"+dutyDateStart+"</td>" + "<td class='spt_td_ellipsis' align='right' title='"+dutyTimeStart+"'>"+dutyTimeStart+"</td>" + "<td class='spt_td_ellipsis' align='right' title='"+dutyDateEnd+"'> "+dutyDateEnd+"</td>" + "<td class='spt_td_ellipsis' align='right' title='"+dutyTimeEnd+"'>"+dutyTimeEnd+"</td>" + "<td class='spt_td_ellipsis' title='"+productLineName+"'>"+productLineName+"</td>" + "<td class='spt_td_ellipsis' title='"+productFamilyName+"'>"+productFamilyName+"</td>" + "<td class='spt_td_ellipsis' title='"+productName+"'>"+productName+"</td>" + "<td align='center'>" + "<span style='cursor:pointer;' onClick='showWebDuty01("+'"'+webDutyId +'"'+");'><img src='<%=request.getContextPath() %>/images/View_file_icon.png' class='spt_webSchedule_img' title='<bean:message key='supportrecover.webduty.queryimg'/>'/></span> " + "</td>" +"</tr>"; } } } if(totalRecords == 0){ dataStr = "<tr class='support_white'><td colspan='12' height='20' align='center'><bean:message key='supportrecover.webduty.nodata'/></td></tr>"; } $("#dataTbody").html(dataStr); //解决firefox对字符过长...的兼容性问题 ffTextOverflow($("#spt_webSchedule_div_result .spt_td_ellipsis")); ajaxPagination(totalRecords); }
总结:pageNumber,pageSize是分页组件根据totalRecords自动计算出来的,不需自己计算。
相关文章推荐
- jQuery组件easyui基本布局实现代码
- JS表格分页组件:fupage的设计思路和具体用法(未来考虑开源,争取在2015年)
- JQuery EasyUI window 用法
- JQuery插件——通用分页组件
- EasyUI 之 DataGrid分页组件中文显示的两种方法(语言的切换)
- 用ajax实现类似easyUi分页的功能,纯html加jquery
- 如何解决easyui-datagrid分页组件中文显示的问题
- JS表格分页组件:fupage的设计思路和具体用法(未来考虑开源,争取在2015年)
- easyui中的datagrid组件前台分页刷新但是数据不刷新
- Easyui主要组件用法
- jquery-easyUI第一篇【介绍、入门、使用常用的组件】
- jquery组件WebUploader文件上传用法详解
- 扩展jQuery-easyui中的tab组件
- JQuery 常用积累(二)Pagination 分页组件
- jQuery EasyUI ComboGrid 集成分页、按键示例
- 【Lucene】使用EasyUI和JQuery配合Lucene实现数据的分页查询以及高亮显示
- jQuery EasyUI NumberBox(数字框)的用法
- jQuery开源组件--jqPaginator分页组件
- JS表格分页组件:fupage的设计思路和具体用法(未来考虑开源,争取在2015年)
- jQueryEasyUI Messager用法