jqGrid开启多选时,如何在选中行时关闭复选框勾选?

3
我正在使用带有多选功能的jqGrid。虽然它可以正常工作,但我想要消除一个副作用。每当有人点击一行时,复选框也会改变其选中状态。我想要去掉这个功能。
我尝试了以下方法:
onSelectRow: function(row) { return false; }

设置和配置

beforeSelectRow: function(rowid, e) { return true; },

如果我将其设置为false,我将获得所需的行为,但是我也不再通过获取任何选定的ID。
jqGrid('getGridParam', 'selarrrow');

有人有解决这个问题的想法吗?

重复查询,请见我的答案这里 - Abu Ghufran
9个回答

8
$("#Grid_ID").jqGrid('hideCol', 'cb');

请在gridComplete函数中添加上述代码行。

我本来想给这个点踩,因为它不支持新的jqgrid,但是它已经7年了,所以你可以保留你的分数。 - catbadger

2

我曾有一个案例,其中有一堆操作是通过选择单元格来触发的,但我不想选择整行。

我在onCellSelect函数中检查了列号,并对第一个选择列以外的列切换复选框选择状态。

if (iCol > 1) {
    $(grid).jqGrid('setSelection', rowid, false);
}

2
beforeSelectRow: function (rowid, e)        
{
    var $myGrid = $(this),
    i = $.jgrid.getCellIndex($(e.target).closest('td')[0]),
    cm = $myGrid.jqGrid('getGridParam', 'colModel');
    return (cm[i].name === 'cb');
},

1

添加初始化方法

  <ClientSideEvents GridInitialized="grdInit">

  function grdInit()
  { 
    var myGrid = $("#myGrid"); 
    myGrid.jqGrid('hideCol', 'cb');
  }

1

我尝试了awattar的方法,但发现srcElement未定义。我改用了这个:

    beforeSelectRow: function(rowid, e){ 
      var td = e.target;
      var index = $.jgrid.getCellIndex(td);
      if(index == 1){ 
        return true; 
      }
      return false; 
    },

0
尝试下面的代码。以下代码帮助我解决了这个问题。借助它,您将无法单击网格。
beforeSelectRow: function(rowid, e) {
        return false;
    }

0
    beforeSelectRow: function(rowid, e){
    if(e.srcElement.type == "checkbox"){
     return true;
    }
    return false;
   },

0

我通过检查提供给onSelect事件处理程序的列ID来实现这一点。如果它不是第一列,就返回false。为了获得所需的行为,我不得不在几个事件处理程序中进行操作。


-1

jqGrid是按照这种方式设计的;您不想显示复选框有充分的理由吗?


我已经担心这个问题了。可用性团队确信这不是正确的行为,他们希望采取另一种方式。 - Kris van der Mast

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接