2010-01-27 20 views
20

Miré el documentation pero no he podido encontrar una respuesta. ¿Hay alguna manera de evitar que se resalte una fila cuando se selecciona? Eso o incluso una forma de detener la fila siendo seleccionada. Me gusta la opción "hoverrows: true", pero idealmente quisiera evitar que se seleccione una fila al hacer clic.¿Es posible detener la selección de jqGrid fila (s) y/o resaltar?

Gracias,

Actualización: he sido capaz de "hackily" poner en práctica algo que parece ser un arreglo temporal. En realidad no me gusta nada y me idealmente como una mejor solución, si es que existe ...

He encontrado que si paso la opción

onSelectRow: function(rowid, status) { 
    $('#'+rowid).removeClass('ui-state-highlight'); 
} 

cuando una instancia del jqGrid, Puedo quitar el resaltado cuando se agrega.

¿Hay alguna otra forma más ideal de hacerlo?

+0

Sólo por curiosidad: Todas las filas, las filas que cumplen un criterio específico (es decir, filas "extraño"), o una sola fila específica? –

+0

cualquier fila en la que se haga clic. el comportamiento natural de jqGrid es aplicar la clase css 'ui-state-highlight' a una fila, cuando se hace clic en ella. Deseo detener esto. – Mike

Respuesta

50

Utiliza el siguiente código:

beforeSelectRow: function(rowid, e) { 
    return false; 
} 
+0

¡Perfecto! Esta es exactamente la forma en que estaba tratando de hacerlo, simplemente no pude encontrar el evento correcto para conectar. Gracias. – Mike

+0

También asegúrese de hacer coincidir la carcasa. 'beforeselectrow' no funciona. –

+1

Tenga en cuenta que esto deshabilitará cualquier edición en esa fila. – FixMaker

2

Supongo que podría abordar esto en el CSS directamente. Sólo anular los valores de ui-estado más destacado para su tabla específica

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

utilicé el valor inherit sólo como un ejemplo - es probable que necesite copiar algunos valores de su theme.css para hacer este trabajo.

+0

Gracias, daré una oportunidad por la mañana y te llamaré. – Mike

+0

Por la compatibilidad del navegador, voy a esquivar esta implementación. Sin embargo, parece bastante agradable ocultar este problema en el CSS. Gracias de todos modos +1. – Mike

2

intento:

onSelectRow: function(rowid, status) { 
    $("#grid_id").resetSelection(); //Resets (unselects) the selected row(s). Also works in multiselect mode. 
} 

se puede leer la documentación here. Espero que le ayuda ...

+0

Un poco más preciso que mi solución. Gracias. – Mike

6

Si, como yo, tiene un jqGrids tropecientos y no desea anular onSelectRow para todos y cada uno, he aquí una versión global de la solución de Reigel que funcionó muy bien para mí:

jQuery.extend(jQuery.jgrid.defaults, { 
    onSelectRow: function(rowid, e) { 
     $('#'+rowid).parents('table').resetSelection(); 
    } 
}); 
+0

Muy bien. Creo que solo las personas que tienen un montón de estas cosas apreciarán su respuesta +1 –

+0

Esta es una gran respuesta. Usar resetSelection le permite conservar la funcionalidad onSelectRow y aún borrar la selección (tengo una implementación de casilla de verificación personalizada que también activa la casilla de verificación al hacer clic en la fila; esto permite que mi código siga funcionando sin el desagradable color de selección :)) – NKCSS

Cuestiones relacionadas