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

DWZ分页、排序失效小结的更多相关文章

  1. C#排序算法小结

    前言 算法这个东西其实在开发中很少用到,特别是web开发中,但是算法也很重要,因为任何的程序,任何的软件,都是由很多的算法和数据结构组成的.但是这不意味着算法对于每个软件设计人员的实际工作都是很重要的 ...

  2. C#拼接SQL语句,SQL Server 2005+,多行多列大数据量情况下,使用ROW_NUMBER实现的高效分页排序

    /// <summary>/// 单表(视图)获取分页SQL语句/// </summary>/// <param name="tableName"&g ...

  3. 对于Oracle中分页排序查询语句执行效率的比较分析

    转自:http://bbs.csdn.net/topics/370033478 对于Oracle中分页排序查询语句执行效率的比较分析 作者:lzgame 在工作中我们经常遇到需要在Oracle中进行分 ...

  4. WPF DataGrid某列使用多绑定后该列排序失效,列上加入 SortMemberPath 设置即可.

    WPF DataGrid某列使用多绑定后该列排序失效 2011-07-14 10:59hdongq | 浏览 1031 次  悬赏:20 在wpf的datagrid中某一列使用了多绑定,但是该列排序失 ...

  5. lucene 查询+分页+排序

    lucene 查询+分页+排序 1.定义一个工厂类 LuceneFactory 1 import java.io.IOException; 2 3 import org.apache.lucene.a ...

  6. ligerUI---ligerGrid分页排序的使用(从后台获取数据显示)

    写在前面: 最近项目的前框框架用的是ligerUI,里面用到了ligerGrid表格,下面就来说说从后台获取数据并在前台页面进行完美展示.啊哈哈哈..(天啦,坐我旁边的丽姐貌似炒股 一个月可以搞几十万 ...

  7. Oracle rownum 分页, 排序

    Oracle rownum 分页, 排序 什么是rownum, rownum的生成, rownum相关的符号操作 Rownum是oracle生成结果集时得到的一个伪列, 按照读出行的顺序, 第一条ro ...

  8. bootstrapTable的数据后端分页排序

    数据后端分页排序,其实就是sql语句中oeder by做一些限制. 之前在写sql语句中的order by是写死,既然要写活,就要传参数到后台. 之前讲到bootstrapTable的queryPar ...

  9. node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)

    最近写了一个用node来操作MongoDB完成增.删.改.查.排序.分页功能的示例,并且已经放在了服务器上地址:http://39.105.32.180:3333. Mongoose是在node.js ...

随机推荐

  1. Eclipse CDT “Symbol NULL could not be resolved”

    在ubuntu里装的eclipse C/C++版,交叉编译程序时,总是提示Symbol NULL could not be resolved.Symbol size_t could not be re ...

  2. [Android Studio导入第三方类库方法] Error:(19, 23) 错误: 程序包org.apache.http不存在

    本文主要参考以下链接: http://m.blog.csdn.net/blog/BoxRice/48575027 https://drakeet.me/android-studio http://ww ...

  3. 通过JavaScript操作HTML中select标签

    添加: Js代码 1.function selectChange() 2.{ 3.var sel=document.getElementById("select1"); 4. Op ...

  4. oracle触发器,一个表新增、修改的同时同步另一张表

    oracle创建触发器,把本地新增.修改数据过程同步到另一个服务器上去. 如果是本地,加数据库名即可.如果是远程服务器,不是一台机器,做一个db_link操作即可. ----------------- ...

  5. jquery.base64.js简单使用

    jquery.base64.js, 加密,使用,先引入jquery,然后引入jquery.base64.js 使用如下 js中加密如下 $.base64.encode(result[i].ipadre ...

  6. 【leetcode】Wildcard Matching(hard) ★ 大神太牛了

    Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single character. ...

  7. 【leetcode】 Letter Combinations of a Phone Number(middle)

    Given a digit string, return all possible letter combinations that the number could represent. A map ...

  8. 【leetcode】Word Search II(hard)★

    Given a 2D board and a list of words from the dictionary, find all words in the board. Each word mus ...

  9. 【python】词法语法解析模块ply

    官方手册:http://www.dabeaz.com/ply/ply.html 以下例子都来自官方手册: 以四则运算为例: x = 3 + 42 * (s - t) 词法分析: 需要将其分解为: 'x ...

  10. java中带继承类的加载顺序详解及实战

    一.背景: 在面试中,在java基础方面,类的加载顺序经常被问及,很多时候我们是搞不清楚到底类的加载顺序是怎么样的,那么今天我们就来看看带有继承的类的加载顺序到底是怎么一回事?在此记下也方便以后复习巩 ...