2014-10-28 85 views
1

我想通過單擊多次選擇和取消選擇一行。jqGrid行選中但未突出顯示

我的代碼是迄今:(lastSelected是一個全球性的var):

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

的代碼工作正常,但行只有第一次點擊之後高亮顯示。第二次點擊並不高亮當我點擊下一次,但在第三,第五......點擊後,它的行爲就像選中(我選擇行時彈出的模式),但沒有突出顯示。

沒有grid.getSelection(id)它根本不會突出顯示,但仍然像選擇和取消選擇一樣工作。

回答

0

在我看來,你的代碼中的主要錯誤是返回值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 
} 

相應的演示是here