• DWZ分页、排序失效小结


    1. 在视图文件中与分页相关的代码段

    1 <form id="pagerForm" method="post" action="w_list.html">
    2     <input type="hidden" name="pageNum" value="1" />
    3     <input type="hidden" name="numPerPage" value="<%= Model.numPerPage %>" />
    4     <input type="hidden" name="orderField" value="<%= param.orderField %>" />
    5     <input type="hidden" name="orderDirection" value="<%= param.orderDirection %>" />
    6 </form>
     1 <div class="panelBar" >
     2         <div class="pages">
     3             <span>显示</span>
     4             <select name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
     5                 <option value="20">20</option>
     6                 <option value="50">50</option>
     7                 <option value="100">100</option>
     8                 <option value="200">200</option>
     9             </select>
    10             <span>条,共200条</span>
    11         </div>
    12         
    13         <div class="pagination" targetType="navTab" totalCount="200" numPerPage="20" pageNumShown="10" currentPage="2"></div>
    14 
    15     </div>
    16 
    17 </div>

    页面如下图所示:

    分页或排序动作会调用到 dwz.ajax.js 中的两个关键脚本方法:

     1 /**
     2  * 处理navTab中的分页和排序
     3  * targetType: navTab 或 dialog
     4  * rel: 可选 用于局部刷新div id号
     5  * data: pagerForm参数 {pageNum:"n", numPerPage:"n", orderField:"xxx", orderDirection:""}
     6  * callback: 加载完成回调函数
     7  */
     8 
     9 function dwzPageBreak(options){
    10     var op = $.extend({ targetType:"navTab", rel:"", data:{pageNum:"", numPerPage:"", orderField:"", orderDirection:""}, callback:null}, options);                    
                        // 参数rel来自于上面第二段代码13行的一个可选属性,用于指定当一个页面内存在有多个表单时,分页操作作用的对象
    11 var $parent = op.targetType == "dialog" ? $.pdialog.getCurrent() : navTab.getCurrentPanel();
                        // 获取到的 $parent 对象为包含 id=“pagerForm” 的 Form 表单
    12 13 if (op.rel) { 14 var $box = $parent.find("#" + op.rel); 15 var form = _getPagerForm($box, op.data); 16 if (form) { 17 $box.ajaxUrl({ 18 type:"POST", url:$(form).attr("action"), data: $(form).serializeArray(), callback:function(){ 19 $box.find("[layoutH]").layoutH(); 20 } 21 }); 22 } 23 } else { 24 var form = _getPagerForm($parent, op.data); 25 var params = $(form).serializeArray(); 26 27 if (op.targetType == "dialog") { 28 if (form) $.pdialog.reload($(form).attr("action"), {data: params, callback: op.callback}); 29 } else { 30 if (form) navTab.reload($(form).attr("action"), {data: params, callback: op.callback}); 31 } 32 } 33 }
     1 /**
     2  * 
     3  * @param {Object} args {pageNum:"",numPerPage:"",orderField:"",orderDirection:""}
     4  * @param String formId 分页表单选择器,非必填项默认值是 "pagerForm"
     5  */
     6 function _getPagerForm($parent, args) {
     7     var form = $("#pagerForm", $parent).get(0);
     8 
     9     if (form) {
    10         if (args["pageNum"]) form[DWZ.pageInfo.pageNum].value = args["pageNum"];
    11         if (args["numPerPage"]) form[DWZ.pageInfo.numPerPage].value = args["numPerPage"];
    12         if (args["orderField"]) form[DWZ.pageInfo.orderField].value = args["orderField"];
    13         if (args["orderDirection"] && form[DWZ.pageInfo.orderDirection]) form[DWZ.pageInfo.orderDirection].value = args["orderDirection"];
    14     }
    15     
    16     return form;
    17 }

    这次在工作中,分页失效的主要原因就是没有将分页排序的几个相关的隐藏表单元素放在 id="pagerForm" 导致在第一个脚本方法中并没有获取到正确的 Jquery 对象 $parent ,从而传递到第二个方法时获取到的 form 变量值为 undefined 

  • 相关阅读:
    DevExpress GridControl用法----SearchLookUpEdit,单选框,图片,颜色,进度条,分页查询
    EasyUi之Datagrid行拖放冲突处理
    [LeetCode No.1] 两数之和
    [LeetCode No.2] 两数相加
    注册定义文件扩展名图标和关联相应的应用程序
    加载进度-【圆圈+百分比】
    .net core + eureka + spring boot 服务注册与调用
    一个Java类的加载
    Nifi:nifi内置处理器Processor的开发
    Nifi:nifi的基本使用
  • 原文地址:https://www.cnblogs.com/ImaY/p/4036154.html
Copyright © 2020-2023  润新知