jqGrid的选中行事件

最近做的一个项目用到了jqGrid,但总是感觉对它一知半解,于是楼主花了一些时间查看了他的API。

jqGrid中一些方法的使用说明如下:
1、获取单个选中行的行ID

var rowid = jQuery("#listTable").jqGrid("getGridParam", "selrow");

2、获取多个选中行的id

var ids=jQuery("#listTable").jqGrid('getGridParam','selarrrow');

3、获得所有行的ID数组

var ids = jQuery("#listTable").jqGrid('getDataIDs');

4、获取单个行数据

var rowData = jQuery("#listTable").jqGrid('getRowData',rowId);

其中,rowId是想要获取行数据的行ID。rowData 是包含整行数据的对象。例如,你想获得该行数据中的ID,可以直接用rowData.id来获得

5、设定行选中


  //设定选中行,可设定多行选中:
  jQuery("#listTable").jqGrid('setSelection',id1);
  jQuery("#listTable").jqGrid('setSelection',id2);

然而,以上这些并不能够满足楼主的需求,楼主需要的是在表格加载完时,就能选中已被标记的行。于是楼主只能自己想办法。

后来,查看文档发现有gridComplete: 这样一个方法。

gridComplete:当表格所有数据都加载完成而且其他的处理也都完成时触发此事件,排序,翻页同样也会触发此事件

setSelection:参数:rowid,onselectrow。选择或反选id = rowid指定的行。若onselectrow设置为true (缺省) 则触发onSelectRow事件,否则不触发。


multiselect: true,
multiboxonly: true,
gridComplete: function() {
          var rowIds = jQuery("#listTable").jqGrid('getDataIDs');
          for(var k=0; k<rowIds.length; k++) {
             var curRowData = jQuery("#listTable").jqGrid('getRowData', rowIds[k]);
             var curChk = $("#"+rowIds[k]+"").find(":checkbox");
             curChk.attr('value', curRowData['is_locked']);   //缁檆heckbox璧嬪€?
             if(curRowData.is_locked == '1'){
                 jQuery("#listTable").(rowIds[k], false); 
              }

          }
      }

后来楼主又发现一个问题,当我们设置multiselect为true时,选择任何的单元格,都会选中该行。而楼主只想在点击指定单元格时才选中行,这该怎么办呢?

beforeSelectRow:参数:rowid, e 此事件发生在用户点击行,选中该行前。rowid 为行的ID,e为事件对象该事件将返回布尔值true(行被选中)或false(行未被选中)。当返回值为false时,将不触发任何事件。

beforeSelectRow:function(rowid, e){
          if(e.type == 'click'){
              i = $.jgrid.getCellIndex($(e.target).closest('td')[0]),  
              cm = jQuery("#listTable").jqGrid('getGridParam', 'colModel');  
              return (cm[i].name == 'cb'); //当点击的单元格的名字为cb时,才触发选择行事件
          }
          return false;
      }

如果我们全选时只想获得自己想要的行id该怎么做呢?

onSelectAll:参数:aRowids,status。此事件发生在点击标题的复选框时发生(multiselect为true)。aRowids为选定行ID的数组(哪些行的复选框与头复选框相同)。status为头复选框的选定的布尔值,true为选中,false为未选中。

onSelectAll:function(rowid, status) { 
          var ids = jQuery("#listTable").jqGrid('getDataIDs');
          for (var i=0; i<ids.length; i++) {
              var cl = ids[i];
              var curRowData = $ynf_list.jqGrid('getRowData', cl);
              if(curRowData.status == 1 && status == true){
jQuery("#listTable").setSelection(rowIds[k], false); 
              }
          }
  var idList=jQuery("#listTable").jqGrid('getGridParam','selarrrow');//获取所有选中行的ID
});
  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值