jqgrid实现子表格

subGridRowExpanded :当点击“+”展开子表格时,将触发此选项定义的事件方法;这时会自动创建一个div,在这个方法中可以获取到这个div的id和表格中该行的id
subGridRowColapsed :当点击“-”收起子表格时,将触发此选项定义的事件方法;
在点击“-”时,子表格的div自动清除
在点击”+”时,也可以不去添加子表格,而去做别的自己需要的操作
html代码

<div class="panel-body">
        <table id="list" style="heigth: 1000px">table>
        <div id="pager">div>
div>

js代码

$(function() {
        //页面加载完成之后执行
        pageInit(); //显示表格 

    });
    function pageInit() { //创建jqGrid组件  
        jQuery("#list")
                .jqGrid(
                        {
                            height : 400,
                            url : "collectLine/json/all",//组件创建完成之后请求数据的url
                            datatype : "json",//请求数据返回的类型。可选json,xml,txt
                            colNames : [ 'id', '名称', '描述', '线路长度', '是否有效',
                                    '目的地', '编辑' ],
                            colModel : [ {
                                name : 'id',
                                index : 'id',
                                width : 50,
                                align : 'left'
                            }, {
                                name : 'name',
                                index : 'name',
                                width : 80,
                                align : 'left'
                            }, {
                                name : 'remark',
                                index : 'remark',
                                width : 200,
                                align : 'left'
                            }, {
                                name : 'length',
                                index : 'length',
                                width : 100,
                                align : 'left'
                            }, {
                                name : 'isValid',
                                index : 'isValid',
                                formatter : validFormatter,
                                width : 150,
                                align : 'left'
                            }, {
                                name : 'destination.name',
                                index : 'destination.name',
                                width : 100,
                                align : 'left'
                            }, {
                                name : 'edit',
                                index : 'edit',
                                width : 150,
                                align : 'left'
                            } ],
                            rowNum : 10,//一页显示多少条  传后台 
                            rowList : [ 10, 20, 30 ],//可供用户选择一页显示多少条
                            pager : '#pager',//表格页脚的占位符(一般是div)的id
                            sortname : 'name',//初始化的时候排序的字段  默认的排序列 传后台 
                            sortorder : "asc",//排序方式,可选desc,asc
                            mtype : "post",//向后台请求数据的ajax的类型。可选post,get
                            viewrecords : true,
                            jsonReader : {
                                root : "content", //数据
                                page : " ", //当前页
                                total : "totalPages", //  总页数
                                records : "totalElements",//从服务器端返回的记录数
                                repeatitems : false,
                                id : "id"
                            },

                            gridComplete : function() { // 数据加载完成后 添加 采购按钮 
                                var ids = jQuery("#list").jqGrid('getDataIDs');
                                for (var i = 0; i < ids.length; i++) {
                                    var id = ids[i];
                                    var editBtn = "
" + " " + "
"
; $("#list").jqGrid('setRowData', id, { edit : editBtn }); } }, caption : "",//表格的标题名字 subGrid : true,//开启子表格支持 //子表格的id;当子表格展开的时候,在主表格中会创建一个div元素用来容纳子表格,subgrid_id就是这个div的id subGridRowExpanded : function(subgrid_id, row_id) {//子表格容器的id和需要展开子表格的行id bindSubGrid(subgrid_id, row_id); } }); /*创建jqGrid的操作按钮容器*/ /*可以控制界面上增删改查的按钮是否显示*/ jQuery("#list").jqGrid('navGrid', '#list', { edit : false, add : false, del : false, search : false }); } function bindSubGrid(subgrid_id, collectLineId) { var subgrid_table_id; subgrid_table_id = subgrid_id + "_t"; // (3)根据subgrid_id定义对应的子表格的table的id var subgrid_pager_id; subgrid_pager_id = subgrid_id + "_pgr" // (4)根据subgrid_id定义对应的子表格的pager的id // (5)动态添加子报表的table和pager $("#" + subgrid_id) .html( "
"
); // (6)创建jqGrid对象 $("#" + subgrid_table_id) .jqGrid( { url : 'collectLinePoint/json/all/' + collectLineId, // (7)子表格数据对应的url,注意传入的contact.id参数 datatype : "json", colNames : [ 'id', '图片', '名称', '描述', '排序', '纬度', '经度', '海拔', '编辑' ], colModel : [ { name : "id", index : "id", width : 50, key : true }, { name : "picUrl", index : "picUrl", formatter : picFormatter, width : 100 }, { name : "name", index : "name", width : 80, align : "left" }, { name : "remark", index : "remark", width : 80, align : "left" }, { name : "sort", index : "sort", width : 50, align : "left" }, { name : "altitude", index : "altitude", width : 80, align : "left" }, { name : "longitude", index : "longitude", width : 80, align : "left" }, { name : "latitude", index : "latitude", width : 80, align : "left" }, { name : "edit", index : "edit", width : 150 } ], rowNum : 10, rolList : [ 10, 20, 30 ], pager : subgrid_pager_id, mtype : "post", viewrecord : true, jsonReader : { root : "content", //数据 page : "", //当前页 total : "totalPages", // 总页数 records : "totalElements",//从服务器端返回的记录数 repeatitems : false, id : "id" }, gridComplete : function() { // 数据加载完成后 添加 采购按钮 var ids = jQuery("#" + subgrid_table_id) .jqGrid('getDataIDs'); for (var i = 0; i < ids.length; i++) { var id = ids[i]; var editBtn = "
" + " " + "
"
; $("#" + subgrid_table_id).jqGrid( 'setRowData', id, { edit : editBtn }); } }, }); } /*根据 id删除一条记录*/ function deleteItem(subgrid_table_id, id) { var r = confirm("确认要删除吗?"); //确认框的字 if (r == true) { $.ajax({ async : false, cache : false, type : 'POST', url : "DRWorkDivision/delete/" + id, error : function() { alert("失败"); }, success : function(data) { $("#" + subgrid_table_id.id).trigger("reloadGrid"); } }); } else { } }

方法deleteItem()中,把子表格的id当做参数,但是在接收参数时,参数是一个HTMLTableElememt,通过subgrid_table_id.id获取表格id

你可能感兴趣的:(jQuery控件)