jqgrid加载展开下级表格

前面已经可以将静态数据展示到表格里了,接下来,将对行处理,使得点击行头第一列的时候, 可以出现二级表格,如

展开二级表格

这里主要就是在生成表格的时候给它加个事件定义:

 subGridRowExpanded: function(subgrid_id, row_id){}

在事件里面可以再次照着表格定义的内容,生成子级表格,这样打开后就可以出现二级表格了。

同时,鉴于此,这里也可以通过动态获取数据来动态加载控制起来。上面的是静态数据,其实,只要通过异步加载,获取到要加载的数据之后,后面的操作也就一样的了。

参考代码

<%@ 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级子表格,不过也肯定是够用了

转载于:https://my.oschina.net/u/2426199/blog/742681

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值