2010-09-28 14 views
6

¿Cómo se puede deshabilitar programáticamente la cuadrícula al resaltar una fila cuando se pasa el mouse por encima? Buscando desactivar esto solo en ciertos momentos.jqGrid deshabilitar resaltado de fila


Este es el código de Oleg, que trabajó:

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

Respuesta

22

Utilice hoverrows:falseoption.

+0

Puedo obtener esto para trabajar cuando configuro esto en la configuración de grilla inicial. Pero si intento configurar esto después de la carga inicial usando '$ (" # list "). SetGridParam ({hoverrows: true});' la nueva configuración no parece tener efecto. Intenté volver a cargar la grilla ('$ (" # list "). Trigger (" reloadGrid ");') después de cambiar la propiedad pero esto tampoco pareció funcionar. Los documentos dicen que esto se puede cambiar ... ¿Alguna idea? –

+0

@Marcus: Estás justo en la tabla en la página http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options. Creo que es más un error en la documentación. Sin embargo, puede desactivar el movimiento de filas dinámicamente ** una vez ** con respecto a '$ (" # list "). Unbind ('mouseover'); $ (" # list "). Unbind ('mouseout');' . Vea la demostración en http://www.ok-soft-gmbh.com/jqGrid/Pager.htm (haga clic en "Desactivar filas de desplazamiento"). No puedes restaurar el estado inicial tan fácilmente. Para restaurar esto, debe vincular los eventos una vez más a las funciones correspondientes (consulte grid.base.js líneas 2109-2119) – Oleg

+0

@Marcus: consulte http://github.com/tonytomov/jqGrid/blob/master/ js/grid.base.js # L2111 (líneas 2111-2121) que se usará en caso de 'hoverrows: true' – Oleg

0

Una simple búsqueda en Google reveló esta fuente:. http://www.trirand.net/examples/appearance/highlight_on_hover/default.aspx

"De manera predeterminada, las filas Hightlight jqGrid en vuelo estacionario Esto es controlado por la propiedad AppearanceSettings.HighlightRowsOnHover - configurarlo en false lo desactivará ".

+0

Vi eso. No vi ningún ejemplo de JavaScript sobre cómo configurar ese objeto. Parece estar controlado de alguna manera por el código .NET ... ?? –

+0

Extraño. Parece una propiedad de . Puede ver ApearanceSettings en acción en el código provisto en esta pregunta: http://stackoverflow.com/questions/2058692/how-to-change-a-specific-rowdata-value-in-a-jqgrid – ChessWhiz

0

estoy reemplazando actualmente el manejador de pasar el ratón existente con una función intermedia que simplemente llama al controlador existente si la red está activado, así:

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

De esta manera no tengo que copiar el jqGrid código de evento.

No me gusta el uso del mouseover [0] .handler, pero funciona por el momento.

Cuestiones relacionadas