如何知道JqGrid多选'全选'复选框被选中

how to know JqGrid multiselect 'select all' checkbox is checked

本文关键字:复选框 全选 JqGrid 何知道 多选      更新时间:2023-12-13

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

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

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

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

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

我参考这个答案尝试过这个代码,但我很确定。checked()无法识别:

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

任何想法都非常感谢

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

onSelectRow不会激发。有一个单独的事件处理程序来捕获全选事件。来自文件:

on选择所有

向您发送以下参数:aRowid,状态

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

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

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);
}