【JqGrid】JqGrid前端分页+排序+查询条件

╰+攻爆jí腚メ 2022-07-14 06:18 474阅读 0赞

jqGrid 是一个用来显示网格数据的jQuery插件,通过使用jqGrid可以轻松实现前端页面与后台数据的ajax异步通信。

页面代码如下:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  4. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  6. <%
  7. String path = request.getContextPath();
  8. %>
  9. <html>
  10. <head>
  11. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  12. <title>XXX列表</title>
  13. <%@ include file="../../../include/top.jsp"%>
  14. <script type="text/javascript">
  15. $(function() {
  16. var vars={
  17. dateFrom : $.currentMonthFirstDay(),
  18. dateTo : $.currentMonthLastDay()
  19. };
  20. $("input[name='startTime']").val(vars.dateFrom);
  21. $("input[name='endTime']").val(vars.dateTo );
  22. });
  23. </script>
  24. <link rel="stylesheet" href="<%=staticPath %>/assets/js/jqgrid/css/ui.jqgrid.css" rel="stylesheet">
  25. <script src="<%=staticPath %>/assets/js/jqgrid/js/i18n/grid.locale-cn.js"></script>
  26. <script src="<%=staticPath %>/assets/js/jqgrid/js/jquery.jqGrid.min.js"></script>
  27. </head>
  28. <body>
  29. <div class="p_container">
  30. <form id="groupOrderGuestForm" method="post">
  31. <input type="hidden" name="page" id="page" value="${pageBean.page }"/>
  32. <input type="hidden" name="pageSize" id="pageSize" value="${pageBean.pageSize }"/>
  33. <input type="hidden" name="userRightType" id="userRightType" value="${userRightType}"/>
  34. <div class="p_container_sub">
  35. <div class="searchRow">
  36. <ul>
  37. <li class="text"> 日期:</li>
  38. <li >
  39. <input name="startTime" id="startTime" type="text" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd'})"/>
  40. ~
  41. <input name="endTime" id="endTime" type="text" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd'})" />
  42. </li>
  43. <li class="text">客人信息:</li>
  44. <li >
  45. <input type="text" name="receiveMode" id="receiveMode" value=""/>
  46. </li>
  47. <li class="text"> 团号:</li>
  48. <li>
  49. <input type="text" name="groupCode" id="groupCode" value=""/>
  50. </li>
  51. <li class="text">平台来源:</li>
  52. <li>
  53. <input name="supplierName" id="supplierName" type="text"/>
  54. </li>
  55. </ul>
  56. <ul>
  57. <li class="text" ">部门:</li>
  58. <li>
  59. <input type="text" name="orgNames" id="orgNames" stag="orgNames"readonly="readonly" οnclick="showOrg()" style="width: 185px;"/>
  60. <input type="hidden" name="orgIds" id="orgIds" stag="orgIds" />
  61. </li>
  62. <li class="text" ">
  63. <select name="operType" id="operType" >
  64. <option value="1">客服</option>
  65. <option value="2">计调</option>
  66. <option value="3">输单员</option>
  67. </select>
  68. </li>
  69. <li>
  70. <input type="text" name="saleOperatorName" id="saleOperatorName" stag="userNames" readonly="readonly" οnclick="showUser()"/>
  71. <input name="saleOperatorIds" id="saleOperatorIds" stag="userIds" type="hidden" />
  72. </li>
  73. <li class="text"> 产品类型:</li>
  74. <li >
  75. <input type="text" id="dicNames" readonly="readonly" οnclick="commonDicDlg()"/>
  76. <input type="hidden" name="orderNo" id="dicIds" />
  77. </li>
  78. <li class="text"> 产品套餐:</li>
  79. <li >
  80. <input type="text" name="remark" id="remark" value=""/>
  81. </li>
  82. </ul>
  83. <ul>
  84. <li class="text" >姓名:</li>
  85. <li >
  86. <input type="text" name="guestName" id="guestName" value="" style="width: 185px;"/>
  87. </li>
  88. <li class="text">性别:</li>
  89. <li class="text" ">
  90. <select name="gender" id="gender" style="width: 80px;">
  91. <option value="">全部</option>
  92. <option value="1"></option>
  93. <option value="0"></option>
  94. </select>
  95. </li>
  96. <li class="text" style="width: 140px;"> 年龄:</li>
  97. <li >
  98. <input type="text" name="ageFirst" id="ageFirst" value="" style="width: 60px;"/>
  99. ~
  100. <input type="text" name="ageSecond" id="ageSecond" value="" style="width: 60px;"/>
  101. </li>
  102. <li class="text">籍贯:</li>
  103. <li >
  104. <input type="text" name="nativePlace" id="nativePlace" value=""/>
  105. </li>
  106. <li style="margin-left: 20px;">
  107. <button type="button" οnclick="searchBtn()" class="button button-primary button-small">查询</button>
  108. <button type="button" οnclick="toPickUpExcel()" class="button button-primary button-small">导出XXX</button>
  109. <button type="button" οnclick="toInsuranceExcel()" class="button button-primary button-small">导出YYY </button>
  110. <a href="javascript:void(0);" id="toGuestListExcelId" target="_blank" οnclick="toGuestListExcel()" class="button button-primary button-small">导出到Excel</a>
  111. </li>
  112. </ul>
  113. </div>
  114. </div>
  115. </form>
  116. </div>
  117. <!-- 以上是查询的条件 -->
  118. <!-- JqGrid -->
  119. <div class="p_container" >
  120. <div class="jqGrid_guest">
  121. <!-- JqGrid Table-->
  122. <table id="contentGroupOrderTable"></table>
  123. <!-- JqGrid page-->
  124. <div id="pagerGroupOrder"></div>
  125. </div>
  126. </div>
  127. <script src="<%=staticPath %>/assets/js/moment.js"></script>
  128. <script src="<%=staticPath %>/assets/js/accounting.min.js"></script>
  129. <script type="text/javascript">
  130. $(function(){
  131. opGrid.loadGrid();
  132. $("#contentGroupOrderTable").setGridParam({datatype:'json', page:1}).trigger('reloadGrid');
  133. //opGrid.reSize();
  134. /* $(window).bind('resize', function () {
  135. opGrid.reSize();
  136. }); */
  137. });
  138. var opGrid = {//组装查询的条件参数
  139. /* reSize: function(){
  140. var width = $('.jqGrid_wrapper').width();
  141. var height = $(window).height();
  142. var searchBox=80, jqGrid_head = 55, jqGrid_pager = 30, jqGrid_footer = 45;
  143. height = height - searchBox - jqGrid_head - jqGrid_pager - jqGrid_footer;
  144. $('#contentGroupOrderTable').setGridWidth(width);
  145. $('#contentGroupOrderTable').setGridHeight(height - 10);
  146. }, */
  147. getParam: function(){
  148. var rowListNum = $("#contentGroupOrderTable").jqGrid('getGridParam', 'rowNum');
  149. if(rowListNum == undefined){
  150. $('#pageSize').val(15);
  151. }else{
  152. $('#pageSize').val(rowListNum);
  153. }
  154. //组装查询的条件参数
  155. var params = {'startTime':$("#startTime").val()
  156. , 'endTime':$("#endTime").val()
  157. , 'supplierName':$("#supplierName").val()
  158. , 'groupCode':$("#groupCode").val()
  159. ,'receiveMode':$("#receiveMode").val()
  160. ,'orgNames':$("#orgNames").val()
  161. ,'orgIds':$("#orgIds").val()
  162. ,'saleOperatorName':$("#saleOperatorName").val()
  163. ,'saleOperatorIds':$("#saleOperatorIds").val()
  164. ,'productName':$("#productName").val()
  165. ,'remark':$("#remark").val()
  166. ,'operType':$("#operType").val()
  167. ,'guestName':$("#guestName").val()
  168. ,'gender':$("#gender").val()
  169. ,'ageFirst':$("#ageFirst").val()
  170. ,'ageSecond':$("#ageSecond").val()
  171. ,'nativePlace':$("#nativePlace").val()
  172. ,'pageSize':$("#pageSize").val()
  173. ,'userRightType':$("#userRightType").val()
  174. };
  175. return params;
  176. },
  177. //对金融的处理,除以人数
  178. formatPerson:function(v,o,r){
  179. return v/(r.num_adult+r.num_child);
  180. },
  181. /* formatOrderMode:function(v,o,r){
  182. return v;
  183. }, */
  184. //对性别的处理
  185. formatGender:function(v,o,r){
  186. if(v == 0 ){
  187. return '女';
  188. }else{
  189. return '男';
  190. }
  191. },
  192. //table数据
  193. loadGrid: function(){
  194. $("#contentGroupOrderTable").jqGrid({
  195. url: 'groupOrderGuestDataList.do',
  196. datatype: "json",
  197. mtype : "post",
  198. //height: 250,
  199. height: "100%",
  200. autowidth: false,
  201. shrinkToFit: false,
  202. rownumbers:true,
  203. rowNum: 15,
  204. rowList: [15, 30, 50, 100, 500, 1000],
  205. //colNames: ['团号', '发团日期', '平台来源', '客人信息', '姓名', '性别',
  206. // '年龄','证件号','电话','籍贯','产品套餐','业务','销售','计调','金额'],
  207. colModel: [
  208. {label:'团号',name: 'group_code',index: 'groupCode',width: 130, sortable: false, align:'left'},
  209. {label:'发团日期',name: 'departure_date',index: 'departure_date',sorttype:'text',align: "center",formatter:function(cellValue,options,rowObject){
  210. return (moment(rowObject.departure_date).format("YYYY-MM-DD"));},width: 100, align:'center',formatoptions:''},
  211. {label:'平台来源',name: 'supplier_name',index: 'supplier_name',width: 60, sortable: false, align:'left'},
  212. {label:'客人信息',name: 'receive_mode',index: 'receive_mode',width: 200, sortable: false, align:'left'},
  213. {label:'姓名',name: 'name',index: 'name',width: 80, sortable: false,align:'center'},
  214. {label:'性别',name: 'gender',index: 'gender',width: 50, sortable: false, align:'center',formatter:opGrid.formatGender},
  215. {label:'年龄',name: 'age',index: 'age',width: 50, align:'center', sorttype:'integer'},
  216. {label:'证件号',name: 'certificate_num',index: 'certificate_num',width: 150, sortable: false, align:'center'},
  217. {label:'电话',name: 'mobile',index: 'mobile',width: 110, sortable: false, align:'center'},
  218. {label:'籍贯',name: 'native_place',index: 'native_place',width: 120, sortable: false, align:'left'},
  219. {label:'产品套餐',name: 'remark',index: 'remark',width: 300, sortable: false, align:'left'},
  220. {label:'业务',name: 'order_mode',index: 'order_mode',width: 70, sortable: false, align:'center', formatter:'select', formatoptions:{
  221. value:{ '1374':'长线',1475:'短线', '1476':'签证', '1486':'门票', '1487':'酒店', '1488':'专线', '1489':'包车', '1490':'组团', '1493':'推广', '1555':'石林九乡'}
  222. }
  223. },
  224. {label:'销售',name: 'sale_operator_name',index: 'sale_operator_name',width: 80, sortable: false, align:'center'},
  225. {label:'计调',name: 'operator_name',index: 'operator_name',width: 50, sortable: false, align:'center'},
  226. {label:'金额',name: 'total',index: 'total',width: 60, sorttype:'number', align:'center', formatter:opGrid.formatPerson}
  227. ],
  228. //sortable:true,
  229. //sortname: 'departure_date',
  230. //sortorder: 'asc',
  231. loadonce: true,//前端排序的关键属性
  232. pager: "#pagerGroupOrder",
  233. viewrecords: true,
  234. caption: "",
  235. jsonReader:{//分页的关键
  236. id: "group_id",
  237. root: "result",total: "totalPage",page: "pageBean",records: "totalCount",repeatitems: false
  238. },
  239. postData:opGrid.getParam(),
  240. footerrow: true,
  241. loadComplete:function(xhr){
  242. //查询为空的处理方式
  243. var rowNum = $("#contentGroupOrderTable").jqGrid('getGridParam','records');
  244. if (rowNum == '0'){
  245. if($("#norecords").html() == null)
  246. $("#contentGroupOrderTable").parent().append("</pre><div id='norecords' style='text:center;padding: 8px 8px;'>没有查询记录!</div><pre>");
  247. $("#norecords").show();
  248. }else{
  249. $("#norecords").hide();
  250. }
  251. }
  252. //,onSortCol: function (index, colindex, sortorder)
  253. //{
  254. /* 列排序事件,向server传值,值为当前的页数,可以传递多个参数。
  255. index, colindex, sortorder三个值可以不设值。 */
  256. //jQuery("#contentGroupOrderTable").jqGrid('setGridParam',{page:$('#page').val()});
  257. //}
  258. });
  259. }
  260. }
  261. function searchBtn() {
  262. //前端分页先将datatype会变成local,所以必须先将其变为Json,点击查询按钮时才不会触发两次,就可以一次性加载数据了
  263. $("#contentGroupOrderTable").setGridParam({datatype:'json', page:1}).jqGrid('setGridParam', {page:1, postData: opGrid.getParam()}).trigger("reloadGrid");
  264. }
  265. </script>
  266. </body>
  267. <script type="text/javascript">
  268. /* 导出XXX */
  269. function toPickUpExcel(){
  270. var curpagenum = $('#contentGroupOrderTable').getGridParam('page');
  271. $("#page").val(curpagenum);
  272. var startTime=$('#startTime').val();
  273. var endTime=$('#endTime').val();
  274. var receiveMode=$('#receiveMode').val();
  275. var groupCode=$('#groupCode').val();
  276. var supplierName=$('#supplierName').val();
  277. var orgIds=$('#orgIds').val();
  278. var orgNames=$('#orgNames').val();
  279. var operType=$('#operType').val();
  280. var saleOperatorIds=$('#saleOperatorIds').val();
  281. var saleOperatorName=$('#saleOperatorName').val();
  282. var orderMode=$('#dicIds').val();
  283. var remark=$('#remark').val();
  284. var page=$('#page').val();
  285. var pageSize=$('#pageSize').val();
  286. var userRightType=$('#userRightType').val();
  287. var guestName=$('#guestName').val();
  288. var gender=$('#gender').val()
  289. var ageFirst=$('#ageFirst').val()
  290. var ageSecond=$('#ageSecond').val()
  291. var nativePlace=$('#nativePlace').val()
  292. window.location ='../taobao/toGroupOrderGuesExport.do?startTime='+startTime
  293. +"&endTime="+endTime
  294. +"&receiveMode="+receiveMode
  295. +"&groupCode="+groupCode
  296. +"&supplierName="+supplierName
  297. +"&orgIds="+orgIds
  298. +"&orgNames="+orgNames
  299. +"&operType="+operType
  300. +"&saleOperatorIds="+saleOperatorIds
  301. +"&saleOperatorName="+saleOperatorName
  302. +"&orderMode="+orderMode
  303. +"&remark="+remark
  304. +"&page="+page
  305. +"&pageSize="+pageSize
  306. +"&userRightType="+userRightType
  307. +"&guestName="+guestName
  308. +"&gender="+gender
  309. +"&ageFirst="+ageFirst
  310. +"&ageSecond="+ageSecond
  311. +"&nativePlace="+nativePlace;
  312. }
  313. /* 导出YYY */
  314. function toInsuranceExcel(){
  315. var curpagenum = $('#contentGroupOrderTable').getGridParam('page');
  316. $("#page").val(curpagenum);
  317. var startTime=$('#startTime').val();
  318. var endTime=$('#endTime').val();
  319. var receiveMode=$('#receiveMode').val();
  320. var groupCode=$('#groupCode').val();
  321. var supplierName=$('#supplierName').val();
  322. var orgIds=$('#orgIds').val();
  323. var orgNames=$('#orgNames').val();
  324. var operType=$('#operType').val();
  325. var saleOperatorIds=$('#saleOperatorIds').val();
  326. var saleOperatorName=$('#saleOperatorName').val();
  327. var orderMode=$('#dicIds').val();
  328. var remark=$('#remark').val();
  329. var page=$('#page').val();
  330. var pageSize=$('#pageSize').val();
  331. var userRightType=$('#userRightType').val();
  332. var guestName=$('#guestName').val();
  333. var gender=$('#gender').val()
  334. var ageFirst=$('#ageFirst').val()
  335. var ageSecond=$('#ageSecond').val()
  336. var nativePlace=$('#nativePlace').val()
  337. window.location ='../taobao/downloadInsure.htm?startTime='+startTime
  338. +"&endTime="+endTime
  339. +"&receiveMode="+receiveMode
  340. +"&groupCode="+groupCode
  341. +"&supplierName="+supplierName
  342. +"&orgIds="+orgIds
  343. +"&orgNames="+orgNames
  344. +"&operType="+operType
  345. +"&saleOperatorIds="+saleOperatorIds
  346. +"&saleOperatorName="+saleOperatorName
  347. +"&orderMode="+orderMode
  348. +"&remark="+remark
  349. +"&page="+page
  350. +"&pageSize="+pageSize
  351. +"&userRightType="+userRightType
  352. +"&guestName="+guestName
  353. +"&gender="+gender
  354. +"&ageFirst="+ageFirst
  355. +"&ageSecond="+ageSecond
  356. +"&nativePlace="+nativePlace;
  357. }
  358. /* 导出到Excel */
  359. function toGuestListExcel(){
  360. var curpagenum = $('#contentGroupOrderTable').getGridParam('page');
  361. $("#page").val(curpagenum);
  362. $("#toGuestListExcelId").attr("href","toSaleGuestListExcel.do?startTime="+$("#startTime").val()
  363. +"&endTime="+$("#endTime").val()
  364. +"&receiveMode="+$("#receiveMode").val()
  365. +"&groupCode="+$("#groupCode").val()
  366. +"&orgIds="+$("#supplierName").val()
  367. +"&orgIds="+$("#orgIds").val()
  368. +"&orgNames="+$("#orgNames").val()
  369. +"&operType="+$("#operType").val()
  370. +"&saleOperatorIds="+$("#saleOperatorIds").val()
  371. +"&saleOperatorName="+$("#saleOperatorName").val()
  372. +"&orderMode="+$("#dicIds").val()
  373. +"&remark="+$("#remark").val()
  374. +"&page="+$("#page").val()
  375. +"&pageSize="+$("#pageSize").val()
  376. +"&userRightType="+$("#userRightType").val()
  377. +"&guestName="+$("#guestName").val()
  378. +"&gender="+$("#gender").val()
  379. +"&ageFirst="+$("#ageFirst").val()
  380. +"&ageSecond="+$("#ageSecond").val()
  381. +"&nativePlace="+$("#nativePlace").val());
  382. }
  383. function commonDicDlg() {
  384. $.dicItemDlg('SALES_TEAM_TYPE','dicNames','dicIds');
  385. }
  386. </script>
  387. <%@ include file="/WEB-INF/views/component/org-user/org_user_multi.jsp"%>
  388. </html>

前提条件是controller得返回数据,且是一次性加载数据,我这里返回一个JSON的字符串,只需添加熟悉

  1. loadonce: true,

以及

  1. sorttype:'number',

这样的话会影响查询条件,对于查询条件的处理,请查阅我的这篇文章:http://blog.csdn.net/zsq520520/article/details/53401328

发表评论

表情:
评论列表 (有 0 条评论,474人围观)

还没有评论,来说两句吧...

相关阅读