已选择jqGrid行,但未高亮显示

已选择jqGrid行,但未高亮显示,jqgrid,Jqgrid,我想通过单击多次选择和取消选择行 到目前为止,我的代码是:lastSelected是一个全局变量: 代码工作正常,但行仅在第一次单击后高亮显示。第二次单击取消高亮显示它,当我下次单击它时,它会一直取消高亮显示,但在第3次、第5次之后。。。单击它的行为就像选择了“我有模式”一样,当选中行时会弹出该模式,但不会高亮显示 如果没有grid.getSelectionid,它将不会高亮显示,但仍然像选择和取消选择一样工作。在我看来,代码中的主要错误是beforeSelectRow的返回值。如果返回的值为n

我想通过单击多次选择和取消选择行

到目前为止,我的代码是:lastSelected是一个全局变量:

代码工作正常,但行仅在第一次单击后高亮显示。第二次单击取消高亮显示它,当我下次单击它时,它会一直取消高亮显示,但在第3次、第5次之后。。。单击它的行为就像选择了“我有模式”一样,当选中行时会弹出该模式,但不会高亮显示


如果没有grid.getSelectionid,它将不会高亮显示,但仍然像选择和取消选择一样工作。

在我看来,代码中的主要错误是beforeSelectRow的返回值。如果返回的值为not false,则标准处理将继续进行,并且可以取消选择先前通过usage setSelection显式选择的行

要解决此问题,应在beforeSelectRow中返回false。此外,我建议使用$this代替grid变量,并使用jqGrid的标准selrow参数代替usage lastSelected变量。生成的代码可能如下所示

beforeSelectRow:函数rowid,e{ var$self=$this,selectedRowid=$self.jqGridgetGridParam,selrow; 如果选择了rowid==rowid{ $self.jqGridresetSelection; }否则{ $self.jqGridsetSelection,rowid,true,e; } 返回false;//不处理标准选择 } 相应的演示是

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