jqgrid subGridRowExpanded出来的子表格如何获取选中的行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jqgrid subGridRowExpanded出来的子表格如何获取选中的行?相关的知识,希望对你有一定的参考价值。

参考技术A 子表格也是一个jqgrid,你可以像操作主表格一样操作子表格的subGridRowExpanded: function(subgrid_id, row_id) // we pass two parameters// subgrid_id is a id of the div tag created whitin a table data// the id of this elemenet is a combination of the "sg_" + id of the row// the row_id is the id of the row// If we wan to pass additinal parameters to the url we can use// a method getRowData(row_id) - which returns associative array in type name-value// here we can easy construct the flowingvar 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");jQuery("#"+subgrid_table_id).jqGrid(url:"subgrid.php?q=2&id="+row_id,datatype: "xml",colNames: ['No','Item','Qty','Unit','Line Total'],colModel: [name:"num",index:"num",width:80,key:true,name:"item",index:"item",width:130,name:"qty",index:"qty",width:70,align:"right",name:"unit",index:"unit",width:70,align:"right",name:"total",index:"total",width:70,align:"right",sortable:false],rowNum:20,pager: pager_id,sortname: 'num',sortorder: "asc",然后子表格的操作就是jQuery("#"+subgrid_table_id).jqGrid('getGridParam','selarrrow');本回答被提问者采纳

jqGrid的subGrid子表格

使用完整jqGrid作为子表格 

使用子表格,涉及到jqGrid的三个选项:

  • subGrid :首先必须将jqGrid的subGrid选项设置为true,默认为false;当此项设为true的时候,Grid表格的最左边将会添加一列,里面有一个“+”图标,用于展开子格;
  • subGridRowExpanded :当点击“+”展开子表格时,将触发此选项定义的事件方法;
  • subGridRowColapsed :当点击“-”收起子表格时,将触发此选项定义的事件方法;

注1 :subGridRowExpanded定义的事件方法函数将会得到两个参数:

  • subgrid_id :子表格的id;当子表格展开的时候,在主表格中会创建一个div元素用来容纳子表格,subgrid_id就是这个div的id。
  • row_id :主表格中所要展开子表格的行的id。


注2 :在subGridRowExpanded定义的事件方法函数中,即可根据以上两个参数,创建新的jqGrid对象,其中的options选项可参考主表格的jqGrid选项来运用。可以理解为在主表格中在嵌套一个新的jqGrid对象。当然,在subGridRowExpanded定义的事件函数中,也不一定非得嵌套一个新的jqGrid到主表格,可以将其放置于任何自己希望的位置,甚至做些别的操作,根本不去里理会子表格,比如使用$.ajax()向Server发送ajax请求,并根据返回的json,做些自定义的操作。

注3 :应当注意subGridRowColapsed的拼写并太符合规范,但却不得不遵循这个拼写。哈哈~

注4 :相对于subGridRowExpanded必须定义事件函数来完成操作,subGridRowColapsed不用刻意定义对应的事件函数;因为当行收起的时候,上面提到的那个动态创建用来容纳子表格的div,其里面的内容将会被自动移除(removed)。

现在来看看代码中到底多了哪些内容。

$(function(){  
    // 配置jqGrid组件   
    $("#gridTable").jqGrid({  
        url: "jqGrid05.action",  
        datatype: "json",  
        mtype: "GET",  
        height: 350,  
        width: 600,  
        colModel: [  
              {name:"id",index:"id",label:"编码",width:40},    
              {name:"lastName",index:"lastName",label:"姓",width:80},  
              {name:"firstName",index:"firstName",label:"名",width:80},  
              {name:"email",index:"email",label:"电子邮箱",width:160,sortable:false},  
              {name:"telNo",index:"telNo",label:"电话",width:120,sortable:false}  
        ],  
        viewrecords: true,  
        rowNum: 15,  
        rowList: [15,50,100],  
        prmNames: {search: "search"},  
        jsonReader: {  
            root:"gridModel",  
            records: "record",  
            repeatitems : false,  
        },  
        pager: "#gridPager",  
        caption: "联系人列表",  
        hidegrid: false,  
        shrikToFit: true,  
        subGrid: true,  // (1)开启子表格支持  
        subGridRowExpanded: function(subgrid_id, row_id) {  // (2)子表格容器的id和需要展开子表格的行id,将传入此事件函数  
            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("<table id=\'"+subgrid_table_id+"\' class=\'scroll\'></table><div id=\'"+subgrid_pager_id+"\' class=\'scroll\'></div>");  
              
            // (6)创建jqGrid对象   
            $("#" + subgrid_table_id).jqGrid({  
                url: "fetchPatentCases.action?contact.id="+row_id,  // (7)子表格数据对应的url,注意传入的contact.id参数  
                datatype: "json",  
                colNames: [\'编号\',\'内部编码\',\'名称\',\'申请号\'],  
                colModel: [  
                    {name:"id",index:"id",width:80,key:true},  
                    {name:"internalNo",index:"internalNo",width:130},  
                    {name:"name",index:"name",width:80,align:"right"},  
                    {name:"applicationNo",index:"applicationNo",width:80,align:"right"}  
                ],  
                jsonReader: {   // (8)针对子表格的jsonReader设置  
                    root:"gridModel",  
                    records: "record",  
                    repeatitems : false  
                },  
                prmNames: {search: "search"},  
                pager: subgrid_pager_id,  
                viewrecords: true,  
                height: "100%",  
                rowNum: 5  
           });  
       }  
    });  
      
});  
 

 

以上是关于jqgrid subGridRowExpanded出来的子表格如何获取选中的行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 subGrid 中绑定和取消绑定事件

jqgrid rows怎么设置

jqgrid rows怎么设置

jqgrid rows怎么设置

jqgrid 最近在用jqgrid,我想要实现列的拖拽功能,请问有人实现过吗

jqgrid传递查询条件,后台接收数据