1. 程式人生 > >四、jq前端分頁外掛jqgrid

四、jq前端分頁外掛jqgrid

1.寫div

<div class="ibox-content">
<div class="jqGrid_wrapper">
<!-- jqGrid資料列表    開始-->
<table id="table_list_1"></table>
<!-- jqGrid資料列表    結束-->
<!-- jqGrid翻頁導航欄    開始-->
<div id="pager_list_1"></div>
<!-- jqGrid翻頁導航欄    結束-->
</div>
</div>

2.引用js,css

<link href="${pageContext.request.contextPath}/css/plugins/jqgrid/ui.jqgridffe4.css?0820" rel="stylesheet">
<script src="${pageContext.request.contextPath}/js/plugins/jqgrid/i18n/grid.locale-cnffe4.js?0820"></script>
<script src="${pageContext.request.contextPath}/js/plugins/jqgrid/jquery.jqGrid.minffe4.js?0820"></script>

3.寫js

$(function() {
$.jgrid.defaults.styleUI = "Bootstrap";  //指定表格使用樣式風格,不可修改
$("#table_list_1").jqGrid({
       url:'${pageContext.request.contextPath}/roleController/list',//獲取資料的地址,需修改  
       mtype : "POST",  
       contentType : "application/json",  
       datatype : "json",
       page : 1,
       autowidth: true,                       //如果為ture時,則當表格在首次被建立時會根據父元素比例重新調整表格寬度
       shrinkToFit: true,                     //此屬性用來說明當初始化列寬度時候的計算型別,如果為ture,則按比例初始化列寬度。如果為false,則列寬度使用colModel指定的寬度
       rownumbers: true,                      //如果為ture則會在表格左邊新增一列,顯示行順序號,從1開始遞增。此列名為'rn'.
       rowNum: 10,                            //在grid上顯示記錄條數,這個引數是要被傳遞到後臺
       rowList: [10, 20, 30],              //一個下拉選擇框,用來改變顯示記錄數,當選擇時會覆蓋rowNum引數傳遞到後臺
       colNames: ["角色名稱" , "角色程式碼", "建立時間","建立人" ,"修改人","修改時間","狀態" ,"操作"],//列顯示名稱,是一個數組物件,需修改
       cellEdit : false,                      //啟用或者禁用單元格編輯功能,可修改
       colModel: [//常用到的屬性:name 列顯示的名稱;index 傳到伺服器端用來排序用的列名稱;width 列寬度;align 對齊方式;sortable 是否可以排序
  {name: "fRoleName",index: "fRoleName",sortable :false},
  {name: "fRoleCode",index: "fRoleCode",sortable :false},
  {name: "fCreateTime",index: "fCreateTime"},
  {name: "fCreator",index: "fCreator",sortable :false},
  {name: "fModifier",index: "fModifier",sortable :false},
  {name: "fModifiedTime",index: "fModifiedTime"},
  {name: "fSysFlag",index: "fSysFlag",sortable :false,formatter:function(cellvalue, options, rowObject){
   if(cellvalue=='1')return '<span style="color:green">有效</span>';
   else if(cellvalue=='0')return '<span style="color:red">無效</span>';
   else return '';
  }},
  {name: "fRoleId",index: "fRoleId", sortable :false, formatter:function(cellvalue, options, rowObject){
  return ['<button type="button" class="btn btn-outline btn-default btn-xs btn-edit" data-id="'+cellvalue+'" title="編輯" ><i class="glyphicon glyphicon-edit" aria-hidden="true"></i></button><button type="button" class="btn btn-outline btn-default btn-xs btn-del" data-id="'+cellvalue+'" title="刪除"><i class="glyphicon glyphicon-trash" aria-hidden="true"></i></button>'].join('');
  }}],
       pager: "#pager_list_1",              //定義翻頁用的導航欄,必須是有效的html元素。翻頁工具欄可以放置在html頁面任意位置,可修改
       viewrecords: true,                   //是否要顯示總記錄數,可修改
       caption: "角色管理",                         //表格名稱,可修改
       hidegrid: false,                     //啟用或者禁用控制表格顯示、隱藏的按鈕,只有當caption 屬性不為空時起效,可修改
       multiselect: true,                   //定義是否可以多選,可修改
       multiboxonly:true,                   //只有當multiselect = true.起作用,當multiboxonly 為ture時只有選擇checkbox才會起作用,可修改
       jsonReader: {                        //描述json 資料格式的陣列,需修改
        root: 'list',
   page: "current",                   // json中代表當前頁碼的資料
   total: "pages",    // json中代表頁碼總數的資料
   records: "total",// json中代表資料行總數的資料
   repeatitems: false,             // 如果設為false,則jqGrid在解析json時,會根據name來搜尋對應的資料元素(即可以json中元素可以不按順序);而所使用的name是來自於colModel中的name設定。
   cell: "cell",
   id: "fRoleId",
   userdata: "userdata",
   },onSelectRow: function(id){        //當選擇行時觸發此事件。rowid:當前行id;status:選擇狀態,當multiselect 為true時此引數才可用
   
       },gridComplete:function(){          //當表格所有資料都載入完成而且其他的處理也都完成時觸發此事件,排序,翻頁同樣也會觸發此事件
        //返回指定行的資料,返回資料型別為name:value,name為colModel中的名稱,value為所在行的列的值,如果根據rowid找不到則返回空。在編輯模式下不能用此方法來獲取資料,它得到的並不是編輯後的值
        var rowData=$("#table_list_1").jqGrid("getRowData");
        //角色新增
        $('#roleadd').click(function () { 
            layer.open({
            type: 2,
            title: '角色新增',
               shadeClose: true,
               shade: 0.8,
               area: ['850px', '400px'],
               content: 'role-add' 
            }); 
            });
        if(rowData.length>0){
        //選擇或反選指定行。如果onselectrow為ture則會觸發事件onSelectRow,onselectrow預設為ture
        $("#table_list_1").setSelection(rowData[0].id);
        //搜尋功能
        $("#rolefind").click(function() {
           $("#table_list_1").jqGrid('searchGrid', {
           multipleSearch:false,
           multipleGroup:false,
             /* sopt : [ 'cn', 'bw', 'eq', 'ne', 'lt', 'gt', 'ew' ] */
           });
        });
        $("#rolerepeat").click(function() {
/*          $("input[name='fRoleName']").val("");
               $("#table_list_1").jqGrid('setGridParam',{  
                   datatype:'json',  
                   postData:{'searchString':''}, //傳送資料  
                   page:1  
               }).trigger("reloadGrid"); //重新載入  */
        window.location.reload();
           });
        //批量刪除
        $("#roledelmore").click(function(){  
                   var rowDelData = jQuery('#table_list_1').jqGrid('getGridParam','selarrrow');  
                   if(rowDelData.length > 0){  
                       var ids = "";  
                       for(var i=0;i<rowDelData.length;i++){  
                           //mainId是colModel中的一屬性  
                           console.log(rowDelData[i]);
                           var mainId = rowDelData[i];  
                           if(ids != ""){  
                               ids = ids + "," + mainId;  
                           }else{  
                           ids = mainId;  
                           }  
                       }  
            layer.confirm('確認要刪除嗎?',function(index){
            $.ajax({
                        type: "POST",
                        url: "${pageContext.request.contextPath}/roleController/delmore",
                        data: {fRolemore:ids},
                        dataType: "json",
                        async:false, 
                        success: function(data){
                       if(data.success){
                         layer.msg('已刪除!',{icon:1,time:1500});
                         setTimeout(function () { 
                        $("#table_list_1").trigger("reloadGrid");
                         }, 1500);    
                       }else{
                      layer.msg('操作失敗!',{icon:1,time:1500});
                   } 
                        }
                 });
              }); 
                       //$.jqgridDeleteButtonClick(pageGrid.gridName,pageGrid.searchParameters,deleteUrl)  
                   }else{  
                   layer.msg('請選擇需要刪除的記錄!!',{icon:1,time:1500});
                   }  
               }); 
        //角色修改
            $('.btn-edit').click(function () {
            var dataid=$(this).data("id");
            layer.open({
               type: 2,
               title: '角色修改',
               shadeClose: true,
               shade: 0.8,
               area: ['850px', '400px'],
               content: 'role-up?fRoleId='+dataid 
            }); 
            });
        //角色刪除
            $('.btn-del').click(function () { 
            var dataid=$(this).data("id");
            layer.confirm('確認要刪除嗎?',function(index){
            $.ajax({
                        type: "POST",
                        url: "${pageContext.request.contextPath}/roleController/del",
                        data: {fRoleId:dataid},
                        dataType: "json",
                        async:false, 
                        success: function(data){
                       if(data.success){
                         layer.msg('已刪除!',{icon:1,time:1500});
                         setTimeout(function () { 
                        $("#table_list_1").trigger("reloadGrid");
                         }, 1500);    
                       }else{
                      layer.msg('操作失敗!',{icon:1,time:1500});
                   } 
                        }
                 });
              });
            });
        }
       }    
   }); 
});

原始碼:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<%@ include file="../inc.jsp" %>
<!DOCTYPE html>
<html>
	<head>
	<meta charset="UTF-8">
    <title>環境規劃管理系統</title>
    <!-- 公用js,css檔案引入開始 -->
	<jsp:include page="/comJSP/commonFile.jsp"></jsp:include>
    <!-- 公用js,css檔案引入結束 -->
    
    <!-- 自有js,css檔案引入開始 -->
	<link href="${pageContext.request.contextPath}/css/plugins/jqgrid/ui.jqgridffe4.css?0820" rel="stylesheet">
	
<script src="${pageContext.request.contextPath}/js/plugins/jqgrid/i18n/grid.locale-cnffe4.js?0820"></script>
<script src="${pageContext.request.contextPath}/js/plugins/jqgrid/jquery.jqGrid.minffe4.js?0820"></script>
<script src="${pageContext.request.contextPath}/js/plugins/layer/layer.min.js"></script>
    <!-- 自有js,css檔案引入結束 -->
	<style type="text/css">
		.conn {
		    border: 0 solid #000;
		    height: 100%;
		    text-align: center;
		    width: 100%;
		}
		.conn img {
		    height: 100%;
		    vertical-align: middle;
		    width: 100%;
		}
		.ui-search-table .columns,.ui-search-table .operators{
		    display: none;;
		}
	</style>
    <script type="text/javascript">
    </script>
	</head>
<body>
	<div class="all">
		<!-- 選單引入開始 -->
		<jsp:include page="/comJSP/menu.jsp"></jsp:include>
		<!-- 選單引入結束 -->
		
		<div class="pagebody">
		<!-- 頁面中間開始 -->
		<!-- 列表標題及操作按鈕    開始 -->
		<div class="ibox-title">
			<div class="ibox-tools">
				<button type="button" class="btn btn-outline btn-default btn-xs"
					id="rolerepeat" data-toggle="modal" data-target="#roleModal" title="重新整理 ">
					<i class="glyphicon glyphicon-repeat " aria-hidden="true"></i>重新整理
				</button>
				<button type="button" class="btn btn-outline btn-default btn-xs"
					id="rolefind" data-toggle="modal" data-target="#roleModal" title="搜尋">
					<i class="glyphicon glyphicon-search " aria-hidden="true"></i>搜尋
				</button>
				<button type="button" class="btn btn-outline btn-default btn-xs"
					id="roleadd" data-toggle="modal" data-target="#roleModal" title="新增">
					<i class="glyphicon glyphicon-plus " aria-hidden="true"></i>新增
				</button>
				<!-- 						<button type="button" class="btn btn-outline btn-default btn-xs" id="btnUserEdit" title="編輯">
					<i class="glyphicon glyphicon-edit" aria-hidden="true"></i>編輯
				</button> -->
				<button type="button" class="btn btn-outline btn-default btn-xs"
					id="roledelmore" title="批量刪除">
					<i class="glyphicon glyphicon-trash" aria-hidden="true"></i>批量刪除
				</button>
				<button type="button" class="btn btn-outline btn-default btn-xs"
					id="role" title="匯出">
					<i class="glyphicon glyphicon-export" aria-hidden="true"></i>匯出
				</button>
				<button type="button" class="btn btn-outline btn-default btn-xs"
					id="btnUserPrint" title="列印">
					<i class="glyphicon glyphicon-print" aria-hidden="true"></i>列印
				</button>
			</div>
		</div>
		<!-- 列表標題及操作按鈕    結束 -->
		
		<!-- 表格開始 -->
		<div class="ibox-content">
			<div class="jqGrid_wrapper">
				<!-- jqGrid資料列表    開始-->
				<table id="table_list_1"></table>
				<!-- jqGrid資料列表    結束-->
				<!-- jqGrid翻頁導航欄    開始-->
				<div id="pager_list_1"></div>
				<!-- jqGrid翻頁導航欄    結束-->
			</div>
		</div>
		<!-- 表格結束-->
		<!-- 頁面中間結束 -->
		
		<!-- 底部開始 -->
		<jsp:include page="/comJSP/foot.jsp"></jsp:include>
		<!-- 底部結束 -->
		</div>
	</div>
	<script type="text/javascript">
		$(function() {
			 $.jgrid.defaults.styleUI = "Bootstrap";	   //指定表格使用樣式風格,不可修改
			 $("#table_list_1").jqGrid({
			        url:'${pageContext.request.contextPath}/roleController/list',//獲取資料的地址,需修改  
			        mtype : "POST",  
			        contentType : "application/json",  
			        datatype : "json",
			        page : 1,
			        autowidth: true,                       //如果為ture時,則當表格在首次被建立時會根據父元素比例重新調整表格寬度
			        shrinkToFit: true,                     //此屬性用來說明當初始化列寬度時候的計算型別,如果為ture,則按比例初始化列寬度。如果為false,則列寬度使用colModel指定的寬度
			        rownumbers: true,                      //如果為ture則會在表格左邊新增一列,顯示行順序號,從1開始遞增。此列名為'rn'.
			        rowNum: 10,                            //在grid上顯示記錄條數,這個引數是要被傳遞到後臺
			        rowList: [10, 20, 30],              //一個下拉選擇框,用來改變顯示記錄數,當選擇時會覆蓋rowNum引數傳遞到後臺
			        colNames: ["角色名稱" , "角色程式碼", "建立時間","建立人" ,"修改人","修改時間","狀態" ,"操作"],		//列顯示名稱,是一個數組物件,需修改
			        cellEdit : false,                      //啟用或者禁用單元格編輯功能,可修改
			        colModel: [		//常用到的屬性:name 列顯示的名稱;index 傳到伺服器端用來排序用的列名稱;width 列寬度;align 對齊方式;sortable 是否可以排序
							   {name: "fRoleName",index: "fRoleName",sortable :false},
							   {name: "fRoleCode",index: "fRoleCode",sortable :false},
							   {name: "fCreateTime",index: "fCreateTime"},
							   {name: "fCreator",index: "fCreator",sortable :false},
							   {name: "fModifier",index: "fModifier",sortable :false},
							   {name: "fModifiedTime",index: "fModifiedTime"},
							   {name: "fSysFlag",index: "fSysFlag",sortable :false,formatter:function(cellvalue, options, rowObject){
								    if(cellvalue=='1')	return '<span style="color:green">有效</span>';
								    else if(cellvalue=='0')	return '<span style="color:red">無效</span>';
								    else return '';
							   }},
							   {name: "fRoleId",index: "fRoleId", sortable :false, formatter:function(cellvalue, options, rowObject){
								   return ['<button type="button" class="btn btn-outline btn-default btn-xs btn-edit" data-id="'+cellvalue+'" title="編輯" ><i class="glyphicon glyphicon-edit" aria-hidden="true"></i></button><button type="button" class="btn btn-outline btn-default btn-xs btn-del" data-id="'+cellvalue+'" title="刪除"><i class="glyphicon glyphicon-trash" aria-hidden="true"></i></button>'].join('');
							   }}],
			        pager: "#pager_list_1",              //定義翻頁用的導航欄,必須是有效的html元素。翻頁工具欄可以放置在html頁面任意位置,可修改
			        viewrecords: true,                   //是否要顯示總記錄數,可修改
			        caption: "角色管理",                         //表格名稱,可修改
			        hidegrid: false,                     //啟用或者禁用控制表格顯示、隱藏的按鈕,只有當caption 屬性不為空時起效,可修改
			        multiselect: true,                   //定義是否可以多選,可修改
			        multiboxonly:true,                   //只有當multiselect = true.起作用,當multiboxonly 為ture時只有選擇checkbox才會起作用,可修改
			        jsonReader: {                        //描述json 資料格式的陣列,需修改
			        	root: 'list',
				    	page: "current",                   // json中代表當前頁碼的資料
				    	total: "pages",    // json中代表頁碼總數的資料
				    	records: "total",// json中代表資料行總數的資料
				    	repeatitems: false,             // 如果設為false,則jqGrid在解析json時,會根據name來搜尋對應的資料元素(即可以json中元素可以不按順序);而所使用的name是來自於colModel中的name設定。
				    	cell: "cell",
				    	id: "fRoleId",
				    	userdata: "userdata",
				    },onSelectRow: function(id){        //當選擇行時觸發此事件。rowid:當前行id;status:選擇狀態,當multiselect 為true時此引數才可用
				    	
			        },gridComplete:function(){          //當表格所有資料都載入完成而且其他的處理也都完成時觸發此事件,排序,翻頁同樣也會觸發此事件
			        	//返回指定行的資料,返回資料型別為name:value,name為colModel中的名稱,value為所在行的列的值,如果根據rowid找不到則返回空。在編輯模式下不能用此方法來獲取資料,它得到的並不是編輯後的值
			        	var rowData=$("#table_list_1").jqGrid("getRowData");
		        		//角色新增
		        		$('#roleadd').click(function () { 
		            		layer.open({
		            			type: 2,
		            			title: '角色新增',
		            		    shadeClose: true,
		            		    shade: 0.8,
		            		    area: ['850px', '400px'],
		            		    content: 'role-add' 
		            		}); 
		            	});
			        	if(rowData.length>0){
			        		//選擇或反選指定行。如果onselectrow為ture則會觸發事件onSelectRow,onselectrow預設為ture
			        		$("#table_list_1").setSelection(rowData[0].id);
			        		//搜尋功能
			        		$("#rolefind").click(function() {
			        			    $("#table_list_1").jqGrid('searchGrid', {
			        			    	multipleSearch:false,
			        			    	multipleGroup:false,
			        			      /* sopt : [ 'cn', 'bw', 'eq', 'ne', 'lt', 'gt', 'ew' ] */
			        			    });
			        		});
			        		$("#rolerepeat").click(function() {
/*  			        			$("input[name='fRoleName']").val("");
			        	        $("#table_list_1").jqGrid('setGridParam',{  
			        	            datatype:'json',  
			        	            postData:{'searchString':''}, //傳送資料  
			        	            page:1  
			        	        }).trigger("reloadGrid"); //重新載入  */
			        			window.location.reload();
		        		    });
			        		//批量刪除
			        		$("#roledelmore").click(function(){  
			                    var rowDelData = jQuery('#table_list_1').jqGrid('getGridParam','selarrrow');  
			                    if(rowDelData.length > 0){  
			                        var ids = "";  
			                        for(var i=0;i<rowDelData.length;i++){  
			                            //mainId是colModel中的一屬性  
			                            console.log(rowDelData[i]);
			                            var mainId = rowDelData[i];  
			                            if(ids != ""){  
			                                ids = ids + "," + mainId;  
			                            }else{  
			                            	ids = mainId;  
			                            }  
			                        }  
				            		layer.confirm('確認要刪除嗎?',function(index){
				            			$.ajax({
				            		             type: "POST",
				            		             url: "${pageContext.request.contextPath}/roleController/delmore",
				            		             data: {fRolemore:ids},
				            		             dataType: "json",
				            		             async:false, 
				            		             success: function(data){
				            		            	 if(data.success){
				            			              layer.msg('已刪除!',{icon:1,time:1500});
				            			              setTimeout(function () { 
				            			            	  $("#table_list_1").trigger("reloadGrid");
				            			              }, 1500);    
				            		            	 }else{
				            		   	    	      layer.msg('操作失敗!',{icon:1,time:1500});
				            			    	     } 
				            		             }
				            		      });
				            		   }); 
			                        //$.jqgridDeleteButtonClick(pageGrid.gridName,pageGrid.searchParameters,deleteUrl)  
			                    }else{  
			                    	layer.msg('請選擇需要刪除的記錄!!',{icon:1,time:1500});
			                    }  
			                }); 
			        		//角色修改
			            	$('.btn-edit').click(function () {
			            		var dataid=$(this).data("id");
			            		layer.open({
			            		    type: 2,
			            		    title: '角色修改',
			            		    shadeClose: true,
			            		    shade: 0.8,
			            		    area: ['850px', '400px'],
			            		    content: 'role-up?fRoleId='+dataid 
			            		}); 
			            	});
			        		//角色刪除
			             	$('.btn-del').click(function () { 
			             		var dataid=$(this).data("id");
			            		layer.confirm('確認要刪除嗎?',function(index){
			            			$.ajax({
			            		             type: "POST",
			            		             url: "${pageContext.request.contextPath}/roleController/del",
			            		             data: {fRoleId:dataid},
			            		             dataType: "json",
			            		             async:false, 
			            		             success: function(data){
			            		            	 if(data.success){
			            			              layer.msg('已刪除!',{icon:1,time:1500});
			            			              setTimeout(function () { 
			            			            	  $("#table_list_1").trigger("reloadGrid");
			            			              }, 1500);    
			            		            	 }else{
			            		   	    	      layer.msg('操作失敗!',{icon:1,time:1500});
			            			    	     } 
			            		             }
			            		      });
			            		   });
			            	});
			        	}
			        }	    
			    }); 
		});
	</script>
</body>
</html>
效果圖: