第一次接触jqgrid,发现项目中好多地方都用到。

  jqgrid是典型的B/S架构(浏览器/服务器模式),服务器端只需提供数据管理,浏览器只需负责数据显示。

  jqGrid是用ajax实现对请求和响应的处理,支持局部实时刷新。

  在对数据进行table显示还是很方便的,只是里面的参数配置很多需要去了解一下。

1.需求

  1. 项目中一个table的分页有问题(jqGridPager)不能点击下一页进行跳转。
  2. 对该table下面的单子信息中的series等多个信息字段进行匹配查询操作

2.修改bug增加新业务

  1. 首先修改原来的table数据不能分页跳转问题,后台的接口都写好了(Oracle的分页by rownum)。主要是页面个page不能正确传递到后台。

      增加loadonce:true属性.发现问题解决。(但为后面搜索功能留下坑)

  2. 增加新的搜索功能,针对这个搜索的业务还是有点绕的,可能是数据库设计不是很友好。

    不是根据table中已有的字段属性进行匹配查询,需要进入单子里面的信息(一对多,而且数据在多张数据表中)
select tab.* from
(
select rownum rn, o.id npi2mpId,o.change_number npi2mpNumber, p2.text01 subject,
getuser(o.originator, 4) originator, o.create_date createDate
from obj_change o, obj_page_two p2,
(
select c.id mpid from obj_change c, OBJ_REV t
where t.text01 like '%W%' and t.text02 like '%W%' and t.text03 like '%WWWW2%'
and t.change_id = c.id
and t.numeric05 = 999
and c.category = 5
and c.delete_flag = 0
group by c.id
)r
where o.id =r.mpid and p2.id =r.mpid
and rownum <=10
)tab where rn >0

在这里又遇到一个问题,在使用distinct去重后rownum打乱了不能分页。想了一个办法通过group by去重再关联查询(当然这个问题还有其他很多解决方法)

将其装换为mybatis的xml配置

select tab.* from
(
select rownum rn, o.id npi2mpId,o.change_number npi2mpNumber,
p2.text01 subject, o.create_date createDate,
getuser(o.originator, 4) originator
from obj_change o, obj_page_two p2,
(
select c.id mpid from obj_change c, OBJ_REV t
where t.numeric05 = #{npi2mpRevFlag}
<if test="series != null and series != ''">
and upper(t.text01) like upper('%${series}%')
</if>
<if test="machineType != null and machineType != ''">
and upper(t.text02) like upper('%${machineType}%')
</if>
<if test="pcaPn != null and pcaPn != ''">
and upper(t.text03) like upper('%${pcaPn}%')
</if>
and c.category = 5
and t.change_id = c.id
and c.delete_flag = 0
group by c.id
)r
where o.id =r.mpid and p2.id =r.mpid
and rownum &lt;=#{endNum}
)tab where rn ">&gt;#{startNum}

这里使用${},也可使用#{},但要注意concat的oracle中只能连接两个值。

  1. 后台的接口写好了,重新回到页面jqgrid,添加新的方法。
		_owner.reload = function(url, searchData) {
if (searchData == null) {
return;
}
_$jqGrid.jqGrid('setGridParam', {
postData : searchData,
url: url,
page: 1,
datatype:'json' //重新向服务器发送新的请求。
}).trigger("reloadGrid");
}
} function reloadNPI2MPTable(url) {
var searchData = {};
$("form :input[name]").each(function(){
var value = $(this).val();
searchData[this.name] = value;
});
//console.log("npi2mp查询条件",searchData);
npi2mpTable.reload(url, searchData);
return;
}

这个遇到问题是jqgrid loadonce:true后trigger(“reloadGrid”)无效

  1. setGridParam中加上参数datatype:‘json’,重新向服务器发送新的请求。

    例如:$("#grid").jqGrid().setGridParam({datatype:‘json’}).trigger(‘reloadGrid’);
  2. 或者在jqGrid version 4.8之后,在trigger中加上参数fromServer:true,

    例如:$("#list").trigger(“reloadGrid”, { fromServer: true, page: 1 });
  1. 改了jqgrid的参数属性后,测试功能。

jqgrid中分页和搜索,jqgrid loadonce:true后trigger("reloadGrid")无效的更多相关文章

  1. jqGrid中multiselect: true 操作checkbox

    在jqGrid中设置multiselect: true可以实现全选的操作,但怎么设置被选中的checkbox里面的值呢,做法如下:jQuery("#listTable").jqGr ...

  2. 【APS.NET Core】- Razor Page 使用jqgrid实现分页功能

    本文将使用jqgrid在Razor Page中实现分页功能. 前台 List.cshtml代码如下: @page @model ListModel @{ Layout = "~/Pages/ ...

  3. jqGrid中实现radiobutton的两种做法

    http://blog.sina.com.cn/s/blog_4f925fc30102e27j.html   jqGrid中实现radiobutton的两种做法 ------------------- ...

  4. jqGrid中多选

    原文地址;http://www.cnblogs.com/josechuanmin/archive/2013/05/19/3087138.html 在jqGrid中设置multiselect: true ...

  5. 在前端页面对easyui中的datagrid与jqgrid加载后的数据进行操作

    因为项目的需求,需要在grid中加载数据后再在前端页面执行操作,所以在easyui中的grid与jqgrid都进行了测试和操作: eayui中grid数据的操作: //构造集合对象 var list ...

  6. jqGrid中的formatter,表格中值的格式化

    jqGrid中对列表cell数次那个格式话设置主要通过colModel中formatter,formatoptions来设置. 基本用法: jQuery("#jqGrid_id") ...

  7. jqGrid细节备注—jqGrid中自定义格式,URL格式

    本文来自:http://cnn237111.blog.51cto.com/2359144/782137 jqGrid中自定义格式,URL格式 当官方自带的showlink用起来不是十分顺手,因此可以考 ...

  8. jqGrid中选择的行的数据[转]

    如何获取jqGrid中选择的行的数据? 下面可以获取选择一行的id,如果你选择多行,那下面的id是最后选择的行的id: var id=$(‘#gridTable’).jqGrid(‘getGridPa ...

  9. 如何获取jqGrid中选择的行的数据

    原文地址:http://hi.baidu.com/feifan3211/item/c5831f44158761a5df2a9fc1 如何获取jqGrid中选择的行的数据? 下面可以获取选择一行的id, ...

随机推荐

  1. App自动化测试环境搭建

    只做记录和注意点,详细内容不做解释 环境:win+appium+夜神模拟器+python 需要用到的工具: 1.java JDK 2. node.js 3. Android SDK 4.Appium- ...

  2. Github无法访问的解决办法

    #github 192.30.253.113 github.com 192.30.253.113 github.com 192.30.253.118 gist.github.com 192.30.25 ...

  3. vue中keepalive怎么理解?​---vue中文社区

    vue中keepalive怎么理解? 说在前面: keep-alive是vue源码中实现的一个组件, 感兴趣的可以研究源码 https://github.com/vuejs/vue/blob/dev/ ...

  4. 【redisson】分布式锁与数据库事务

    场景: 用户消耗积分兑换商品. user_point(用户积分): id point 1 2000 point_item(积分商品): id point num 101 200 10 传统的contr ...

  5. php压缩文件zip格式并打包(单个或多个文件压缩)

    最近接到一个需求,就是选择多个文件下载时,不要一个一个下载,直接把多个文件打包成一个文件进行下载.我们项目是前后端分离,所以我写了个接口,让前端传参数,后台下载. 废话不多说,直接上代码: 先是压缩单 ...

  6. JVM第二篇 类加载子系统

    1.内存结构概述 简图 ​ 详细 ​ ​ ​ 2.类加载器与类加载的过程 ​ 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识[CA FE BA BY ...

  7. NIO学习笔记,从Linux IO演化模型到Netty—— Netty零拷贝

    Netty的中零拷贝与上述零拷贝是不一样的,它并不是系统层面上的零拷贝,只是相对于ByteBuf而言的,更多的是偏向于数据操作优化这样的概念. Netty中的零拷贝: 1.CompositeByteB ...

  8. promise链式调用

    var that = this;that.hello().then(res => { return that.world(res);}).then(res => { console.log ...

  9. comTest.json文件中内容,被NewsList.vue文件引入

    本文目标:就是把扩散名为.json文件中数据,传递给NewsList.vue文件.主要通过导出,并传递给data(){}变紧 新建文件名为:commTest.json { "schoolNa ...

  10. cf1214E

    题意简述:构造一棵包含2*n个节点的树,要求2*i 和 2*i-1之间的距离等于d[i]<=n 1<=i<=n 给出N和d数组,输入对应的边 题解:对d数组按照从大到小排序,然后首先 ...