2010-09-28 9 views
6

Wie können Sie das Gitter programmatisch deaktivieren, um eine Zeile hervorzuheben, wenn Sie mit der Maus darüber fahren? Sie möchten dies nur zu bestimmten Zeiten deaktivieren.jqGrid deaktiviert die Hervorhebung von Zeilen


Dies ist der Code von Oleg, die gearbeitet:

$('#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"); 
    }); 

Antwort

22

Verwenden Sie hoverrows:falseoption.

+0

kann ich das bekommen funktionieren, wenn ich dies in der anfänglichen Grid-Konfiguration einstelle. Aber wenn ich versuche, dies nach dem initialen Laden mit '$ (" # list ") zu setzen. SetGridParam ({travel: true});' Die neue Einstellung scheint nicht zu wirken. Das erneute Laden des Gitters ('$ (" # list "). Trigger (" reloadGrid ");') nach dem Ändern der Eigenschaft versucht, aber dies schien auch nicht zu funktionieren. Die Doktoren sagen, dass das geändert werden kann. Irgendwelche Ideen? –

+0

@Marcus: Sie haben Recht in der Tabelle auf der Seite http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options. Ich denke, es ist mehr ein Fehler in der Dokumentation. Trotzdem können Sie das Schweben von Zeilen dynamisch ** einmalig ** in Bezug auf '$ (" # list ") deaktivieren. Unbind ('mouseover'); $ (" # list "). Unbind ('mouseout');' . Siehe Demo auf http://www.ok-soft-gmbh.com/jqGrid/Pager.htm (klicke auf "Hoverzeilen deaktivieren"). Sie können den Anfangszustand nicht so einfach wiederherstellen. Um dies wiederherzustellen, müssen Sie die Ereignisse noch einmal an die entsprechenden Funktionen binden (siehe grid.base.js Zeilen 2109-2119) – Oleg

+0

@Marcus: siehe http://github.com/tonytomov/jqGrid/blob/master/ js/grid.base.js # L2111 (Zeilen 2111-2121), die im Falle von 'Schwebeflugen verwendet werden: true' – Oleg

0

Eine einfache Google-Suche diese Quelle ergab. http://www.trirand.net/examples/appearance/highlight_on_hover/default.aspx

„standardmäßig jqGrid hightlight Reihen auf schweben Dieser gesteuert durch Die Eigenschaft AppearanceSettings.HighlightRowsOnHover - wenn Sie sie auf false setzen, wird dies deaktiviert. "

+0

Sah das. Es wurde kein JavaScript-Beispiel zum Festlegen dieses Objekts angezeigt. Scheint irgendwie durch .NET code gesteuert zu werden .. ?? –

+0

Seltsam. Sieht aus wie eine Eigenschaft von . Sie können AppearanceSettings in Aktion in dem Code sehen, der in dieser Frage zur Verfügung gestellt wird: http://stackoverflow.com/questions/2058692/how-to-change-a-specific-rowdata-value-in-a-jqgrid – ChessWhiz

0

Ich bin derzeit die bestehenden Mouseover-Handler mit einer Zwischen Funktion ersetzen, die nur den vorhandenen Handler aufruft, wenn das Raster aktiviert ist, wie folgt aus:

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); 
    } 
}); 

Auf diese Weise muß ich die jqGrid nicht kopieren Ereigniscode.

Ich mag den Einsatz von mouseover [0] .handler nicht, aber es funktioniert für den Moment.

Verwandte Themen