Pregunta

un par de problemas utilizando Tablesorter 2.0.3.

El primer problema es cuando me puse un colspan en mi mesa. Básicamente cuando hago esto como debajo de ella no ordena las columnas respectivas.

<table> 
<thead> 
        <th colspan="3"></th>  
        <th>Four</th> 
        <th>Five</th>
        <th>Six</th>
        <th>Seven</th>  
</thead> 
<tbody> 
<tr> 
        <td>1</td> 
        <td>2</td> 
        <td>3</td> 
        <td>4</td>
        <td>5</td> 
        <td>6</td>
        <td>7</td>
</tr>  
</tbody> 
</table> 

El segundo problema que tengo es que no importa lo que se propuso la sortInitialOrder ( "desc" o "ASC") en los tablesorter.js, no tiene ningún efecto de hacer la clasificación ascendente o descendente cuando se hace clic sucesivamente.

Por favor, ¿alguien puede ayudar?

¿Fue útil?

Solución

Para resolver el problema de uno puede crear su propia asignación de encabezados en cols de datos. esto es lo que hice para conseguir la funcionalidad de la manera que quería.

He añadido el siguiente método para tablesorter.js:

function findInMap(map, index, reverse) {
    for(var i = 0; i < map.length; ++i) {
        if(map[i][reverse ? 1 : 0] == index) return map[i][reverse ? 0 : 1];
    }

    return index;
}

Y también añade lo siguiente a this.defaults

customMap: []

El, cambiar el método siguiente:

function setHeadersCss(table,$headers, list, css) {
    $headers.removeClass(css[0]).removeClass(css[1]);

    var h = [];
    $headers.each(function(offset) {
        if(!this.sortDisabled) {
            h[this.column] = $(this);                   
        }
    });

    var l = list.length; 

    for(var i=0; i < l; i++) {
        var header = list[i];
        var headerIndex = findInMap(table.config.customMap, header[0], true);
        h[headerIndex].addClass(css[header[1]]);
    }
}

Por último, pero no menos importante, añadir / cambiar el siguiente en $headers.click(function(e) {

Añadir:

var ia = findInMap(config.customMap, i, false);

Cambio: config.sortList.push([i,this.order]); Para config.sortList.push([ia,this.order]);

Cuando el INIT tablesorter pasar un customMap[[header_col_id, data_col_id]] En su caso será:

customMap[
    [2, 4],
    [3, 5],
    ...
]

Otros consejos

¿Qué se puede esperar que suceda si se ha hecho clic en un encabezado que abarca tres columnas? ¿Qué esperas que la columna para ordenar? En general, para tablesorter funcione, es necesario tener un encabezado de cada columna.

no parece

sortInitialOrder ser mencionado en la página web de tablesorter pero existe en el código. He utilizado anteriormente sólo esto:

sortList: [[5, 0]]

que inicialmente en orden ascendente en el uso de la quinta columna.

He resuelto el problema un poco, como yo también quería solamente la tabla para ordenar ascendente solamente, I modificado la línea 536 a this.order = this.count++ % 0; que hace que sea una especie como yo quiero que haga.

En relación con el colspan, sólo han tenido que recurrir a la que tienen en blanco 's para que pueda ordenar las columnas respectivas. Puede que no sea marcado correcta, pero puedo ver ninguna otra manera de arreglar esto.

he resuelto un problema similar por mí mismo con el siguiente parche en el propio tablesorter de código;

Index: jquery.tablesorter.js
===================================================================
--- jquery.tablesorter.js   (.../original)  (revision x)
+++ jquery.tablesorter.js   (.../mine)  (revision y)
@@ -278,7 +278,10 @@
                     cache.row.push(c);

                     for (var j = 0; j < totalCells; ++j) {
-                        cols.push(parsers[j].format(getElementText(table.config, c[0].cells[j]), table, c[0].cells[j]));
+                        var cSpan = c[0].cells[j].colSpan || 1;
+                        while (cSpan--) {
+                            cols.push(parsers[j].format(getElementText(table.config, c[0].cells[j]), table, c[0].cells[j]));
+                        }
                 }

Acabase mi problema se invirtió; Tenía 2 columnas que abarcan 1 célula collspanned. Esto soluciona todas las columnas después de la columna abarcó sigue siendo clasificable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top