2010-09-28 27 views
6

Fare ile üzerine geldiğinizde bir satırı vurgulayarak ızgarayı programlamayı nasıl engelleyebilirsiniz? Bunu sadece belirli zamanlarda devre dışı bırakmak istiyorum.jqGrid satır vurgulamayı devre dışı bırakma

$('#result-close').click(function() { 
     //Turn off hover highlighting 
     $("#list").unbind('mouseover'); 
     $("#list").unbind('mouseout'); 

     //Highlight row      
     $("#" + selid).effect("highlight", {}, 5000); 

     //Turn on hover highlighting 
     setTimeout(function(){ 
        $("#list").bind('mouseover',function(e) { 
         ptr = $(e.target).closest("tr.jqgrow"); 
         if($(ptr).attr("class") !== "subgrid") { 
          $(ptr).addClass("ui-state-hover"); 
         } 
         return false; 
        }).bind('mouseout',function(e) { 
         ptr = $(e.target).closest("tr.jqgrow"); 
         $(ptr).removeClass("ui-state-hover"); 
         return false; 
        }); 
     }, 2000);   

     $('#dialog').dialog("close"); 
    }); 

cevap

22

hoverrows:falseoption kullanın. Şu anda bu gibi ızgara etkinse sadece mevcut işleyicisi çağıran bir ara fonksiyonu ile mevcut mouseover işleyicisi yerine gidiyorum

+0

Bunu elde edebilirim Bunu ilk ızgara yapılandırmasında ayarladığımda. Ama eğer ilk yüklemeden sonra '$ ("# list") kullanarak ayarlamaya çalışırsam setGridParam ({hoverrows: true}); 'yeni ayarın etkileneceği görünmüyor. Izgarayı yeniden yüklemeyi denedim ('$ (" # list "). Tetikleyici (" reloadGrid ");') özelliği değiştirdikten sonra bu işe yaramadı. Doktorlar bunun değişebileceğini söylüyorlar .. herhangi bir fikir? –

+0

@Marcus: Bu sayfada, http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options adresindeki haklısınız. Belgelerdeki bir hata olduğunu düşünüyorum. Yine de, satırların dolambaçlı bir şekilde, ** $ ("# list") ile ** bir kez ** kapatabilirsiniz, ('mouseover'), $ ("# liste"), unbind ('mouseout'); . Http://www.ok-soft-gmbh.com/jqGrid/Pager.htm adresindeki demoya bakın ("Vurgulu satırları devre dışı bırak" seçeneğine tıklayın). İlk durumu geri yüklemek çok kolay olamaz. Bunu geri yüklemek için, olayları karşılık gelen işlevlere bir kez daha bağlamanız gerekir (bkz. Grid.base.js satırları 2109-2119) – Oleg

+0

@Marcus: http://github.com/tonytomov/jqGrid/blob/master/ adresine bakın. js/grid.base.js # L2111 (satır 2111-2121) 'hoverrows: true' durumunda kullanılacak olacak – Oleg

0

basit bir Google araması bu kaynağı ortaya koydu::


Bu

çalıştı Oleg gelen kodudur. http://www.trirand.net/examples/appearance/highlight_on_hover/default.aspx

"Varsayılan olarak, jqGrid hightlight satırlar vurgulu üzerindeki bu tarafından kontrol edilir AppearanceSettings.HighlightRowsOnHover özelliği - bunu yanlış olarak ayarlamak bunu devre dışı bırakır. "

+0

Bunu gördünüz. Bu nesneyi nasıl ayarlayacağınıza dair herhangi bir JavaScript örneği görmedim. .NET kodu tarafından bir şekilde denetleniyor gibi görünüyor .. ?? –

+0

Garip. 'in bir özelliği gibi görünüyor. AppearanceSettings'i bu sorudaki kodda görebilirsiniz: http://stackoverflow.com/questions/2058692/how-to-change-a-specific-rowdata-value-in-a-jqgrid – ChessWhiz

0

:

var enabled = true; 
var jqe = jQuery("#grid"); 
var mouseover = jqe.data('events').mouseover[0].handler; 
jqe.unbind('mouseover'); 
jqe.bind('mouseover', function() { 
    if (enabled) { 
     mouseover.apply(this, arguments); 
    } 
}); 

Ben JqGrid kopyalamak gerekmez Bu şekilde olay kodu

Mouseover kullanımını sevmiyorum [0] .handler, ancak şu an için çalışıyor.

İlgili konular