2010-01-27 54 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

相關問題