• jqueryeasyui分页组件的用法


    项目进行到迭代二的开发和测试阶段,发现一个比较隐藏的bug,那就是分页组件的使用不当问题。

    问题现象:

    多页面新增数据后,点击下一页数据显示没有问题,但是当前页,总页数的计算出了问题。

    原因分析:

    show data后,没有重新加载分页控件导致,因为totalRecords是重新计算出来的。

    解决方案及代码:

    show data后重新加载分页控件。代码如下:

    1,页面初始化

    1 $(document).ready(function(){ 
    2 //初始化分页组件
    3     var total=${total};
    4     if(total == "0"){
    5         var loadingMeg = "<tr class='support_white'><td colspan='12' height='20' align='center'><bean:message key='supportrecover.webduty.nodata'/></td></tr>";
    6         $("#dataTbody").html(loadingMeg);
    7     }
    8     ajaxPagination(total); 
    9 });

    2,加载分页组件核心函数

     1 function ajaxPagination(totalRecords){
     2     $("#ajaxPagination").pagination({
     3         total: totalRecords,    // totalRecord(总记录数) 需要在进入页面时,在action中赋值
     4         onSelectPage: function(pageNumber, pageSize){
     5             //分页组件显示加载数据状态
     6             $(this).pagination('loading');
     7             //url为请求路径,注意需要带 pageNumber、ajaxPageSize参数。如果有查询参数,拼接上。
     8             var form = document.queryForm;
     9             form.current_page.value = pageNumber;
    10             form.page_size.value = pageSize;
    11             var regionSelects = $("#q_region2").val();
    12             var regSelects = $("#q_reg2").val();
    13             var roles = $("#q_role2").val();
    14             var gtacs = $("#q_gtac2").val();
    15             var dutyDateStarts = $("#q_dutyDateStart2").val();
    16             var dutyDateEnds = $("#q_dutyDateEnd2").val();
    17             var productLines = $("#q_productLine2").val();
    18             var productFamilys = $("#q_productFamily2").val();
    19             var products = $("#q_productID2").val();
    20             //地区部为空的时候,把代表处也至空
    21             if(regSelects == "null" || regSelects == null)
    22             {
    23                  regSelects = "";
    24             }
    25             //产品线为空的时候,把产品族也至空
    26             if(productFamilys == "null" || productFamilys == null)
    27             {
    28                  productFamilys = "";
    29             }
    30             //地区部为空的时候,把代表处也至空
    31             if(productFamilys == "")
    32             {
    33                   products = "";
    34                   $("#q_cheakProducts").html("");
    35             }
    36               //判断日期控件
    37             var q_isSuss = q_vilidate();
    38             if(!q_isSuss)
    39             {
    40                 return;
    41             }
    42             var loadingMeg = "<tr class='support_white'><td colspan='12'><img width='12' height='12' src='<%=request.getContextPath() %>/images/loading.gif'>loading...</td></tr>";
    43             //清空表格tbody内容
    44             $("#dataTbody").empty();
    45             //表格显示加载数据状态
    46             $("#dataTbody").html(loadingMeg);
    47             $.ajax({
    48                 url : "/SupportRecover/pages/webduty/webDuty.do?actionFlag=ajaxGetWebDuty_all",
    49                 data:
    50                 {    
    51                     "regionSelect":regionSelects,
    52                     "regSelect":regSelects,
    53                     "role":roles,
    54                     "dutyDateStart":dutyDateStarts,
    55                     "dutyDateEnd":dutyDateEnds,
    56                     "productLine":productLines,
    57                     "productFamily":productFamilys,
    58                     "product":products,
    59                     "gtac":gtacs,
    60                     "current_page":pageNumber,
    61                     "page_size":pageSize
    62             },
    63             type : "POST",
    64             dataType : 'json',
    65                 success: function(data) {
    66                      showJsonData(data);
    67                 },
    68                 error:function()
    69                 {
    70                      forwardToLogin();
    71                 }
    72             });
    73             $("#ajaxPagination").pagination('loaded');
    74         }
    75     });    
    76 }

    3,数据展现后重新加载分页控件

     1 function showJsonData(data){
     2     var totalRecords = 0;
     3     var dataStr = "";
     4     if(data != null && data != ""){
     5         var list = data.pageWebDuty.webDutyList;
     6            var jsonLst = eval('(' + list + ')');
     7            totalRecords=eval(data.pageWebDuty.totalRecords);
     8         //alert(jsonLst.length);
     9         if(jsonLst != "" && jsonLst != "undefined"){
    10             for(var i=0;i<jsonLst.length;i++){
    11                 var commonName=jsonLst[i].commonName;
    12                 var dutyRoleName=jsonLst[i].dutyRoleName;
    13                 var gtacName=jsonLst[i].gtacName;
    14                 
    15                 var regionName ="";
    16                 var repName ="";
    17                 if(nls == "zh")
    18                 {
    19                     regionName = jsonLst[i].regionNameCn;
    20                     repName = jsonLst[i].repNameCn;
    21                 }else{
    22                     regionName = jsonLst[i].regionNameEn;
    23                     repName = jsonLst[i].repNameEn;
    24                 }
    25                 
    26                 var zonedescription=jsonLst[i].zonedescription;
    27                 var dutyDateStart=jsonLst[i].dutyDateStart;
    28                 var dutyDateEnd=jsonLst[i].dutyDateEnd;
    29                 var dutyTimeStart=jsonLst[i].dutyTimeStart;
    30                 var dutyTimeEnd=jsonLst[i].dutyTimeEnd;
    31                 
    32                 var productLineName = "";
    33                 var productFamilyName = "";
    34                 var productName = "";
    35                 if(nls == "zh")
    36                 {
    37                     productLineName = jsonLst[i].productLineNameCn;
    38                     productFamilyName = jsonLst[i].productFamilyNameCn;
    39                     productName = jsonLst[i].productNameCn;
    40                 }else{
    41                     productLineName = jsonLst[i].productLineNameEn;
    42                     productFamilyName = jsonLst[i].productFamilyNameEn;
    43                     productName = jsonLst[i].productNameEn;
    44                 }
    45                 
    46                 var webDutyId = jsonLst[i].webDutyId;
    47                 dataStr = dataStr 
    48                 +"<tr id='"+webDutyId+"'>"
    49                 +                "<td class='spt_td_ellipsis' title='"+commonName+"'>"+commonName+" </td>"
    50                 +                "<td class='spt_td_ellipsis' title='"+dutyRoleName+"'>"+dutyRoleName+"</td>"
    51                 //+                "<td class='spt_td_ellipsis' title='"+gtacName+"'>"+gtacName+"</td>"
    52                 +                "<td class='spt_td_ellipsis' title='"+regionName+"'>"+regionName+"</td>"
    53                 +                "<td class='spt_td_ellipsis' title='"+repName+"'>"+repName+"</td>"
    54                 +                "<td class='spt_td_ellipsis' align='right' title='"+dutyDateStart+"'>"+dutyDateStart+"</td>"
    55                 +                "<td class='spt_td_ellipsis' align='right' title='"+dutyTimeStart+"'>"+dutyTimeStart+"</td>"
    56                 +                "<td class='spt_td_ellipsis' align='right' title='"+dutyDateEnd+"'> "+dutyDateEnd+"</td>"
    57                 +                "<td class='spt_td_ellipsis' align='right' title='"+dutyTimeEnd+"'>"+dutyTimeEnd+"</td>"
    58                 +                "<td class='spt_td_ellipsis' title='"+productLineName+"'>"+productLineName+"</td>"
    59                 +                "<td class='spt_td_ellipsis' title='"+productFamilyName+"'>"+productFamilyName+"</td>"
    60                 +                "<td class='spt_td_ellipsis' title='"+productName+"'>"+productName+"</td>"
    61                 +                "<td align='center'>"
    62                 +                "<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>&nbsp;&nbsp;"
    63                 +                "</td>"
    64                 +"</tr>";            
    65             }
    66         }
    67     }
    68     
    69     if(totalRecords == 0){
    70         dataStr = "<tr class='support_white'><td colspan='12' height='20' align='center'><bean:message key='supportrecover.webduty.nodata'/></td></tr>";
    71     }
    72        $("#dataTbody").html(dataStr);
    73        //解决firefox对字符过长...的兼容性问题
    74       ffTextOverflow($("#spt_webSchedule_div_result .spt_td_ellipsis"));
    75       ajaxPagination(totalRecords);
    76 }

    总结:pageNumber,pageSize是分页组件根据totalRecords自动计算出来的,不需自己计算。

  • 相关阅读:
    日期时间格式或封装,已经互相转换,抽出来日后方便自己开发,之前用作在mpvue的框架开发小程序中
    微信小程序授权方法全能,当用户拒绝或者首次进来的,都可以弹起授权提示,主要是用wx.getSetting,还有wx.authorize,最后的wx.openSetting
    JavaScript封装自己的一个弹窗,是双按钮的,比较简单一些 ,其中引用了jQuery来写的方法,最后暴露出去,有更好的建议欢迎评论 。。。。
    最近学习mpvue框架开发微信小程序,把wepy框架的项目实现到mpvue中,知道其中的一些两者之间的区别
    JavaScript中历史搜索记录的实现,在h5页面,引用jQuery写法,使用localStorage存储
    vue中实现双向数据绑定原理,使用了Object.defineproperty()方法,方法简单
    好好学习vue中 写了一些demo 希望自己能提升多一点 vue中实现父子组件之间的通信 相比我的上一篇非父子组件会简单些
    Java中Scanner类在nextInt()后无法输入nextLine()的问题
    mybatis中#{}和${}的区别及order by的sql注入问题
    Intellij常用设置及快捷键
  • 原文地址:https://www.cnblogs.com/ivan0626/p/2813346.html
Copyright © 2020-2023  润新知