如何知道JqGrid multiselect'全选'复选框已选中

时间:2013-11-30 02:33:53

标签: javascript jquery checkbox jqgrid

我试图在JQgrid中显示所选行。现在,我有这个代码:

onSelectRow:function(rowid){
    var selectedRow = $('#mygrid').jqGrid('getGridParam', 'selarrrow');
    $("#totalSelected").val(selectedRow .length); 
}

它的工作正常,但是当选中'select all'复选框时,它没有触发此代码,尽管在视觉中我们可以看到所有行都已被选中。

所以我想如果我知道选中'全选'复选框,我可以像这样设置所选的总值:

  if(//selectall checkbox is checked) 
      $("#totalSelected").val($("#mygrid tr").length-1);

我通过引用this answer尝试了此代码,但我非常确定.checked()无法识别:

  if($("#cb_mygrid"[0].id).checked()) 
      $("#totalSelected").val($("#mygrid tr").length-1);

非常感谢任何想法

1 个答案:

答案 0 :(得分:8)

使用标题复选框选择所有项目时,

onSelectRow不会触发。有一个单独的事件处理程序来捕获Select All事件。来自文档:

onSelectAll

发送以下参数: aRowids,状态

当multiselect选项为true并且单击标题复选框时,将触发此事件。 aRowids是所选行(rowid)的数组。 status是一个确定标题复选框状态的布尔变量 - 如果选中则为true,否则为false。 请注意,无论是选中还是取消选中标题复选框,aRowids数组都将始终包含ids。

当此事件触发时,您需要执行以下操作以显示所选行的正确计数:

onSelectAll: function(aRowids, status) {
    //Use a ternary operator to choose zero if the header has just been unchecked, or the total items if it has just been checked.
    $("#totalSelected").val(status === false ? 0 : aRowids.length);
}