【问题标题】:jqGrid row selected but not highlightedjqGrid 行已选中但未突出显示
【发布时间】:2014-10-28 11:45:36
【问题描述】:

我想通过点击多次选择和取消选择一行。

到目前为止,我的代码是:(lastSelected 是一个全局的var):

beforeSelectRow: function (id)
{
   if (lastSelected !== id) 
   {
     grid.setSelection(id);
     lastSelected = id;
     return;
   } 
   else
   {
     grid.resetSelection(id);
     lastSelected = null;
   }
}

代码工作正常,但只有在第一次单击后才会突出显示行。第二次点击取消突出显示它,当我下次点击它时它一直不突出显示,但在第 3 次,第 5 次之后......点击它的行为就像选择了(我有选择行时弹出的模式),但没有突出显示。

没有grid.getSelection(id),它根本不会突出显示,但仍然像选择和取消选择一样工作。

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    在我看来,您代码中的主要错误是beforeSelectRow 的返回值。如果返回的值不在false 中,则将继续进行标准处理,并且可以取消选择您之前使用setSelection 明确选择的行。

    要解决此问题,您应该从beforeSelectRow 返回false。另外,我建议使用$(this) 而不是grid 变量,并使用jqGrid 的标准selrow 参数而不是使用lastSelected 变量。生成的代码可能如下

    beforeSelectRow: function (rowid, e) {
        var $self = $(this), selectedRowid = $self.jqGrid("getGridParam", "selrow");
    
        if (selectedRowid === rowid) {
            $self.jqGrid("resetSelection");
        } else {
            $self.jqGrid("setSelection", rowid, true, e);
        }
    
        return false; // don't process the standard selection
    }
    

    对应的demo是here

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 2018-03-31
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 2011-02-26
      • 1970-01-01
      相关资源
      最近更新 更多