2010-01-27 81 views
20

我看过documentation,但我一直无法找到答案。有没有办法阻止选中时突出显示一行?这甚至是一种停止被选中的行的方法。我喜欢“hoverrows:true”选项,但理想情况下,我想停止选择点击后的行。是否可以停止选中和/或突出显示jqGrid行?

感谢,

更新: 我已经能够“hackily”实现的东西,这似乎是一个临时补丁。我真的不喜欢它,并会像idealy一个更好的解决办法,如果有一个...

我发现,如果我通过了选项

onSelectRow: function(rowid, status) { 
    $('#'+rowid).removeClass('ui-state-highlight'); 
} 

当我实例化jqGrid的,当它被添加时,我可以去除高光。

是否有另一种更理想的方式来做到这一点?

+0

只是好奇:所有行,满足特定条件(即“奇”行),或特定的一个行的行? – 2010-01-27 15:44:53

+0

任何被点击的行。 jqGrid的自然行为是在单击时将css类“ui-state-highlight”应用到行中。我希望阻止这一点。 – Mike 2010-01-27 15:52:47

回答

50

使用下面的代码:

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

完美!这正是我尝试这样做的方式,我无法找到正确的事件来解决问题。谢谢。 – Mike 2010-01-28 09:11:27

+0

也一定要匹配套管。 '电子之前'不起作用。 – 2011-10-11 20:56:05

+1

请注意,这将禁用该行上的任何编辑。 – FixMaker 2012-11-21 14:54:11

2

我想你可以直接在CSS中解决这个问题。只是覆盖了UI状态高亮的数值为特定表

#table_id tr.ui-state-highlight { 
    border: inherit !important; 
    background: inherit !important; 
    color: inherit !important; 
} 

#table_id tr.ui-state-highlight a { 
    color: inherit !important; 
} 

#table_id tr.ui-state-highlight .ui-icon { 
    background-image: inherit !important; 
} 

我使用的值inherit只是作为一个例子 - 你可能会需要一些值从theme.css复制,使这项工作。

+0

谢谢,我会在早上给你一个镜头,然后回复你。 – Mike 2010-01-27 16:35:49

+0

对于浏览器兼容性的问题,我会避开这个实现。不过,将这个问题隐藏在CSS中看起来相当不错。无论如何感谢+1。 – Mike 2010-01-28 09:12:51

2

尝试:

onSelectRow: function(rowid, status) { 
    $("#grid_id").resetSelection(); //Resets (unselects) the selected row(s). Also works in multiselect mode. 
} 

您可以阅读单证here。希望它可以帮助你......

+0

稍微比我的解决方案更准确。谢谢。 – Mike 2010-01-28 09:14:00

6

如果你和我一样,有一个极大jqGrids,不希望重写onSelectRow每单之一,这里有一个全球版本的Reigel的解决方案,很好地为我工作:

jQuery.extend(jQuery.jgrid.defaults, { 
    onSelectRow: function(rowid, e) { 
     $('#'+rowid).parents('table').resetSelection(); 
    } 
}); 
+0

非常好,我认为只有那些有大量这些东西挂在身边的人会喜欢你的答案+1 – 2013-03-05 00:28:09

+0

这是一个很好的答案,使用resetSelection可以让你保存onSelectRow的功能,并仍然清除选择(我有一个自定义的复选框实现,也切换行单击复选框;这使我的代码继续工作,没有讨厌的选择颜色:)) – NKCSS 2014-09-17 07:15:14

相关问题