打开多选的jqGrid,如何在选择行时关闭复选框检查

时间:2010-01-06 09:30:28

标签: jquery jqgrid

我正在使用带有多选的jqGrid。这有效,但我有副作用,我想摆脱。每当有人点击一行时,该复选框也会改变其检查状态。我想把它留下来。

我试过了:

onSelectRow: function(row) { return false; }

并设置

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

如果我将其设置为false,我会得到所需的行为,但之后我也无法通过

获得任何选定的ID
jqGrid('getGridParam', 'selarrrow');

任何人都有想法解决这个问题吗?

9 个答案:

答案 0 :(得分:8)

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

在gridComplete函数

上添加上面的代码行

答案 1 :(得分:2)

我有一个案例,我通过选择单元格触发了一系列操作,但我不希望选择该行。

我检查onCellSelect函数中的列号,并为第一个选择列以外的列切换复选框选择

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

答案 2 :(得分: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');
},

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

添加init方法

  <ClientSideEvents GridInitialized="grdInit">

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

答案 5 :(得分:0)

我能够通过检查提供给onSelect事件处理程序的列ID来实现这一点。如果它是除第一列之外的任何列,则返回false。我必须在几个事件处理程序中执行此操作才能获得首选行为。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

尝试以下一项。下面的代码帮助我重新解决了这个问题。借助于此,你无法点击网格。

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

答案 8 :(得分:-1)

jqGrid旨在以这种方式工作;你有充分的理由不想显示复选框吗?