【问题标题】:jqGrid with multiselect on, how to turn off checkbox checking when row is selected启用多选的jqGrid,如何在选择行时关闭复选框检查
【发布时间】:2010-01-06 09:30:28
【问题描述】:

我正在使用带有多选功能的 jqGrid。那行得通,但我有一个副作用,我想摆脱它。每当有人单击一行时,复选框也会更改其选中状态。我想把它排除在外。

我试过了:

onSelectRow: function(row) { return false; }

和设置

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

如果我将其设置为 false,我会得到所需的行为,但是我也不会再通过

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

有人有办法解决这个问题吗?

【问题讨论】:

  • 重复查询,看我的回答here

标签: jquery jqgrid


【解决方案1】:
$("#Grid_ID").jqGrid('hideCol', 'cb');

在gridComplete函数上添加上面的代码行

【讨论】:

  • 我本来打算对它投反对票,因为它没有使用新的 jqgrid,但它已经 7 岁了,所以你可以保留你的观点。
【解决方案2】:

我有一个案例,我有一堆通过选择单元格触发的操作,我不想选择该行。

我检查 onCellSelect 函数中的列号并将复选框选择切换回除第一个选择列之外的列

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

【讨论】:

    【解决方案3】:
    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');
    },
    

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        添加初始化方法

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:
                beforeSelectRow: function(rowid, e){
                if(e.srcElement.type == "checkbox"){
                 return true;
                }
                return false;
               },
            

            【讨论】:

              【解决方案8】:

              试试下面的一个。下面的代码帮助我解决了这个问题。借助此功能,您将无法单击网格。

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

              【讨论】:

                【解决方案9】:

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

                【讨论】:

                • 我已经害怕了。可用性团队确信这是不正确的行为,并希望以另一种方式。
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2011-09-21
                • 2011-11-29
                • 1970-01-01
                • 1970-01-01
                • 2014-12-04
                • 1970-01-01
                • 2011-06-08
                相关资源
                最近更新 更多