jqGrid usa jQuery UI para los iconos de ordenación. Puede implementar su propio tema intaractive en el http://jqueryui.com/themeroller/ y descargarlo al final de la personalización. Si solo desea cambiar los iconos de ordenación a otros iconos que ya existen en el tema, puede hacerlo más fácilmente. Pero antes de todo, debe comprender cómo se usarán los íconos en los encabezados de las columnas.
En el momento de la inicialización, se crearán encabezados para todas las columnas de jqGrid. Cada encabezado contiene tramos con los iconos ordenar. Los bloques de envergadura parece siguiente
<span class="s-ico" style="display: none;">
<span class="ui-grid-ico-sort ui-icon-asc ui-state-disabled ui-icon ui-icon-triangle-1-n ui-sort-ltr" sort="asc" />
<span class="ui-grid-ico-sort ui-icon-desc ui-state-disabled ui-icon ui-icon-triangle-1-s ui-sort-ltr" sort="desc" />
</span>
Debido a que tiene clase "ui-icono" tiene los elementos de fondo que vienen del tema de jQuery UI que se utiliza. Desde el fondo se usarán las partes correspondientes a los íconos "ui-icon-triangle-1-n" y "ui-icon-triangle-1-s". Clases ui-icon
, ui-icon-triangle-1-n
y ui-icon-triangle-1-s
se define de la siguiente manera
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
Si desea reemplazar allí a otros iconos (ver todos los iconos estándar disponibles en el botom de http://jqueryui.com/themeroller/) se puede hacer esto, por ejemplo, directamente después de la creación de la jqGrid (después de jQuery("#list").jqGrid({/*...*/});
). Si no encuentra en la imagen de fondo los íconos que necesita, mejor no cambie los íconos existentes. Puede agregar algunas partes nuevas en la imagen de fondo que usa.
No hay soporte directo para los iconos de clasificación de 3 estados (ascendente, descendente y sin clasificar) en jqGrid. Si desea implementar esto, le recomendaré que lea cuidadosamente la implementación de la función sortData
de grig.base.js
que se encuentra en el subdirectorio src
de las fuentes descargadas de jqGrid. Esta función llama a las funciones jQuery.hide()
o jQuery.show()
para span.s-ico
, agrega o elimina la clase ui-state-disabled
en uno de los intervalos de hijos y llama al onSortCol
identificador de evento si está definido.De modo que puede implementar todos los iconos de cambio de orden dentro de su identificador de evento personalizado onSortCol
.
ACTUALIZADO:Free jqGrid tenedor tiene muchas opciones para personalizar los iconos de clasificación. En primer lugar, si es compatible con los iconos Font Awesome. Solo se necesita incluir el Font Awesome CSS y la opción. Uno puede, por ejemplo, usar threeStateSort: true
para permitir que se muestre el artículo en orden original sin ordenar en el clic tridimensional en el encabezado de la columna. Se puede usar sortIconsBeforeText: true
para cambiar el orden de los iconos y el texto. Colocar los iconos de clasificación antes del texto podría ser útil en caso de utilizar texto largo en los encabezados de las columnas. Se puede usar la opción showOneSortIcon: true
para mostrar solo un ícono de clasificación (desc o asc) en lugar de dos íconos de clasificación (uno sobre el segundo o uno cerca del segundo).
Incluso se puede personalizar completamente los iconos de clasificación sobrescribiendo el método $.jgrid.builderSortIcons
. The demo muestra cómo se puede usar el método personalizado simple $.jgrid.builderSortIcons
para establecer * diferentes iconos de clasificación para diferentes columnas. The demo utiliza tres iconos diferentes que dependen del tipo de datos en la columna. Las columnas con el tipo de clasificación predeterminado sorttype: "text"
muestra
y 
las columnas que tienen tipos numéricos (sorttype: "integer"
, sorttype: "int"
, sorttype: "float"
, sorttype: "number"
o sorttype: "currency"
) Muestra
y 
y el resto de la columna, por ejemplo, la columna que tiene sorttype: "date"
muestra
y 
¿Cómo mostrar los iconos de clasificación en estado deshabilitado para cada columna inicialmente? Esto proporciona un pegamento visual para que las columnas puedan clasificarse. – Andrus
@Andrus: Publiqué la respuesta a su pregunta [aquí] (http://stackoverflow.com/a/8899305/315935). – Oleg