2012-02-16 15 views
5

Tengo una tabla con una columna con números que abarcan aproximadamente -10 a 10 y algunas columnas vacías.jquery tablesorter clasificación de celdas de la tabla vacía última

Me gustaría que tablesorter coloque siempre las columnas vacías en la parte inferior de la tabla. Incluso si clasifico ascendente o descendente.

De esta manera:

-1 
0 
2 
3 
<empty cell> 
<empty cell> 

o como esto:

3 
2 
0 
-1 
<empty cell> 
<empty cell> 

Tenga en cuenta que mi problema es el mismo que pregunta 4792426 excepto que quiero celdas vacías en la parte inferior tanto al ordenar orden es descendente y ascendiendo

Eliminar filas no es una opción.

Respuesta

7

Encontré una manera de resolver mi problema.

La solución provista por ssell no funcionó. Los datos de la tabla se analizan solo una vez, por lo que no puede usar una variable global para controlarlo. ¡Buen intento! :-)

Este es el código necesario. Como ve, sobrecargo las funciones formatFloat y formatInt para que devuelvan null en lugar del valor predeterminado: . La función de clasificación dentro de tablesorter hace el resto mágicamente para mí.

 $(document).ready(function() { 
     $.tablesorter.formatInt = function (s) { 
      var i = parseInt(s); 
      return (isNaN(i)) ? null : i; 
     }; 
     $.tablesorter.formatFloat = function (s) { 
      var i = parseFloat(s); 
      return (isNaN(i)) ? null : i; 
     }; 
     $("#table").tablesorter(); 
    }); 

Por lo que sé, mi solución no está documentada, pero funciona bien.

+0

Estamos encantados de que funciona! Eliminar mi respuesta ya que no funciona. – ssell

+3

Para que lo sepan, he copiado una copia de [tablesorter en github] (http://mottie.github.com/tablesorter/docs/) y en la última versión ordena automáticamente las celdas vacías de la tabla en la parte inferior - [demo] (http://jsfiddle.net/Mottie/Z9wdn/13/) – Mottie

2

Con las versiones posteriores del complemento jQuery de tablesorter puede agregar un tipo diferente de clasificador en los encabezados para poner automáticamente vacío/nulo o cadena (si, por ejemplo, ingresa un "-" en lugar de nulo) donde le gustaría (arriba/abajo).

<th class="{'sorter': 'digit', 'string': 'bottom'}">Count</th> 

Esta es una forma de insertarlo directamente en html/templates. Pero si tiene consistencia en el recuento de columnas, puede hacerlo en la función inicial de tablesorter.

$('table').tablesorter(
    headers: { 
     1: { sorter: "digit", empty : "top" }, 
     2: { sorter: "digit", string: "bottom"} 
    } 
) 

cualquier manera funciona bien pero es básicamente lo que pones fuerzas como el segundo k, v del objeto de encabezado para tomar precedencia sobre la clasificación de la manera normal.

Más información se puede encontrar en the tablesorter docs.

0

Si puede ayudar a cualquiera, aquí es cómo lo hice para el texto.

function emptyAtBottomTextSorter(a, b, direction, column, table) { 
    if (a == "") { 
     a = direction ? "ZZZZZ" : ""; 
    } 
    if (b == "") { 
     b = direction ? "ZZZZZ" : ""; 
    } 
    return ((a < b) ? -1 : ((a > b) ? 1 : 0)); 
} 

$("#myTable").tablesorter({ 
    headers: { 
     1 : {'sorter' : 'text'} 
    }, 
    textSorter: { 
     1 : emptyAtBottomTextSorter 
    } 
}); 

Trabajando como de Tablesorter v2.26.2

Cuestiones relacionadas