jqGrid行已选中但未突出显示

时间:2014-10-28 11:45:37

标签: jqgrid

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

我的代码到目前为止:(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)它根本不会突出显示,但仍然像选择和取消选择一样工作。

1 个答案:

答案 0 :(得分:0)

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

要解决此问题,您应该从false返回beforeSelectRow。另外,我建议使用$(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
}

相应的演示是here