jqgrid加載展開下級表格

前面已經能夠將靜態數據展現到表格裏了,接下來,將對行處理,使得點擊行頭第一列的時候, 能夠出現二級表格,如javascript

展開二級表格

這裏主要就是在生成表格的時候給它加個事件定義:css

subGridRowExpanded: function(subgrid_id, row_id){}

在事件裏面能夠再次照着表格定義的內容,生成子級表格,這樣打開後就能夠出現二級表格了。html

同時,鑑於此,這裏也能夠經過動態獲取數據來動態加載控制起來。上面的是靜態數據,其實,只要經過異步加載,獲取到要加載的數據以後,後面的操做也就同樣的了。java

參考代碼jquery

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>數據展現,分3級,點擊展開下一級子表格的demo</title>
<% String base = request.getContextPath(); %>
<link id="uiThemes" rel="stylesheet" type="text/css" media="screen" href="css/jquery-ui.min.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />
    <!-- 引入jQuery -->
    <script src="<%=base %>/js/jquery-1.9.1.min.js" type="text/javascript"></script>
<%--     <script src="<%=base %>/js/jquery-ui-1.10.2.min.js" type="text/javascript"></script> --%>
    <script src="<%=base %>/js/grid.locale-cn.js" type="text/javascript"></script>
    <script src="<%=base %>/js/jquery.jqGrid.min.js" type="text/javascript"></script>

<script>
//定義數據源
 var mydata = [
                {id:"1",userName:"polaris",gender:"男",email:"fef@163.com",QQ:"33334444",mobilePhone:"13223423424",birthday:"1985-10-01"},
                {id:"2",userName:"李四",gender:"女",email:"faf@gmail.com",QQ:"222222222",mobilePhone:"13223423",birthday:"1986-07-01"},
                {id:"3",userName:"王五",gender:"男",email:"fae@163.com",QQ:"99999999",mobilePhone:"1322342342",birthday:"1985-10-01"},
                {id:"4",userName:"馬六",gender:"女",email:"aaaa@gmail.com",QQ:"23333333",mobilePhone:"132234662",birthday:"1987-05-01"},
                {id:"5",userName:"趙錢",gender:"男",email:"4fja@gmail.com",QQ:"22222222",mobilePhone:"1343434662",birthday:"1982-10-01"},
                {id:"6",userName:"小毛",gender:"男",email:"ahfi@yahoo.com",QQ:"4333333",mobilePhone:"1328884662",birthday:"1987-12-01"},
                {id:"7",userName:"小李",gender:"女",email:"note@sina.com",QQ:"21122323",mobilePhone:"13220046620",birthday:"1985-10-01"},
                {id:"8",userName:"小三",gender:"男",email:"oefh@sohu.com",QQ:"242424366",mobilePhone:"1327734662",birthday:"1988-12-01"},
                {id:"9",userName:"孫先",gender:"男",email:"76454533@qq.com",QQ:"76454533",mobilePhone:"132290062",birthday:"1989-11-21"}
                ];
var url = "<%=request.getContextPath()%>/GetDataServlet";
var obj = new Object();
var data = new Object();

	$.post(
		url,
		function(result){
			obj = strToJson(result);
			if(obj!=null){				
				data =obj.rows;
				createJQGrid();
			}
		}
	);
	
	function strToJson(str){
		var json = eval('(' + str + ')');
		return json;
		} 
	
	function createJQGrid(){
		$("#gridTable").jqGrid({
    	    url:url,
            datatype: "json", //數據類型
            mtype:"GET",//提交方式
            height: 250,
            colNames:['編號','用戶名', '郵箱', '年齡','暱稱','操做'],  //至關於展示列表的//顯示名稱
            colModel:[  //列定義,name定義的是對應於數據源的key標示,index對應的則是傳到服務器斷用來排序用的列名稱
                    {name:'id',index:'id', width:60, sorttype:"int"},
                    {name:'username',index:'userName', width:90},
                    {name:'nickname',index:'nickname', width:100} ,
                    {name:'email',index:'email', width:125,sorttype:"string"},
                    {name:'age',index:'age', width:100}  ,
                    {name:'actions', index:'actions', width:80, align:'left', sortable:false, 
						formatter:function(cellvalue,options,rowObject){
					            	  if(cellvalue == null ||cellvalue==""){
										  return "";
									  }
						   			  return "<a href='" + cellvalue + "' target='_blank'>查看</a>";
						   		  }
					}
                                   
            ],
            sortname:'id',//按這個字段排序
            sortorder:'asc',//升序
            viewrecords:true,//定義是否要顯示總記錄數
            rowNum:10, //在grid上顯示記錄條數,這個參數會傳到後臺去
            rowList:[10,20,30], //可選的每頁多少記錄
            subGrid: true,
    	   subGridRowExpanded: function(subgrid_id, row_id) {
    			 var subgrid_table_id, pager_id;
    				subgrid_table_id = subgrid_id+"_t";
    				pager_id = "p_"+subgrid_table_id;
    				$("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>");
    				$("#"+subgrid_table_id).jqGrid({
    					datatype: "local",
    					  colNames:['編號','用戶名', '性別', '郵箱', 'QQ','手機號','出生日期'],
    		              colModel:[
    		                        {name:'id',index:'id', width:60, sorttype:"int"},
    		                        {name:'userName',index:'userName', width:90},
    		                        {name:'gender',index:'gender', width:90},
    		                        {name:'email',index:'email', width:125,sorttype:"string"},
    		                        {name:'QQ',index:'QQ', width:100},                
    		                        {name:'mobilePhone',hidden:false,index:'mobilePhone', width:120},                
    		                        {name:'birthday',index:'birthday', width:100, sorttype:"date"}                
    		             ],
    					rownumbers: false,
    				   	multiselect: false,
    				   	viewrecords: true,
    				   	rowNum:100,
    				    height: '100%', // deleteSuspectedItem
    				    width: '100%',
    				    subGrid: true,
    				    subGridRowExpanded: function(subgrid_id, row_id){
    				    	 var subgrid_table_id, pager_id;
    		    				subgrid_table_id = subgrid_id+"_t";
    		    				pager_id = "p_"+subgrid_table_id;
    		    				$("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>");
    		    				$("#"+subgrid_table_id).jqGrid({
    		    					datatype: "local",
    		    					  colNames:['編號','用戶名', '性別', '郵箱', 'QQ','手機號','出生日期'],
    		    		              colModel:[
    		    		                        {name:'id',index:'id', width:60, sorttype:"int"},
    		    		                        {name:'userName',index:'userName', width:90},
    		    		                        {name:'gender',index:'gender', width:90},
    		    		                        {name:'email',index:'email', width:125,sorttype:"string"},
    		    		                        {name:'QQ',index:'QQ', width:100},                
    		    		                        {name:'mobilePhone',hidden:false,index:'mobilePhone', width:120},                
    		    		                        {name:'birthday',index:'birthday', width:100, sorttype:"date"}                
    		    		             ],
    		    					rownumbers: false,
    		    				   	multiselect: false,
    		    				   	viewrecords: true,
    		    				   	rowNum:100,
    		    				    height: '100%', // deleteSuspectedItem
    		    				    width: '100%'
    		    				});
    		    				for(var i=0;i<=mydata.length;i++)
    		    		             jQuery("#"+subgrid_table_id).jqGrid('addRowData',i+1,mydata[i]);
    				    }
    				});
    				for(var i=0;i<=mydata.length;i++)
    		             jQuery("#"+subgrid_table_id).jqGrid('addRowData',i+1,mydata[i]);
    		},
    		subGridRowColapsed: function(subgrid_id, row_id) {

    		},
            pager:"#gridPager", //定義翻頁用的導航欄,必須是有效的html元素,翻頁工具欄位置能夠防止在//任意位置
            caption: "第一個jqGrid例子"  //表格頭的名稱
    }).navGrid('#gridPager',{edit:false,add:false,del:false});
		
		 for(var i=0;i<=data.length;i++)
             jQuery("#gridTable").jqGrid('addRowData',i+1,data[i]);
	}
	
	
       
      


</script>
<style>
   p{
   	color:red;
   }
</style>
</head>
<body>

 		<!--  jqGrid的table  -->
        <table id="gridTable"></table>
		<!-- 翻頁的div -->
        <div id="gridPager"></div>
        <br/>
    
</body>
</html>

通過測試,發現,jqgrid這個最多隻能到16級子表格,不過也確定是夠用了json

相關文章
相關標籤/搜索