Domanda

I un paio di questioni che utilizzano tablesorter 2.0.3.

Il primo problema è quando ho impostato un colspan sul mio tavolo. Fondamentalmente quando faccio questo come sotto non ordina le rispettive colonne.

<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> 

Il secondo problema che ho è che non importa quello che ho impostato il sortInitialOrder ( "disc" o "asc") nei tablesorter.js, non ha alcun effetto a rendere l'ordinamento crescente o decrescente, quando si fa clic on.

Si prega chiunque può aiutare?

È stato utile?

Soluzione

Per risolvere il problema si è possibile creare la propria mappatura delle intestazioni a colli di dati. ecco cosa ho fatto per ottenere la funzionalità nel modo che volevo.

Ho aggiunto il seguente metodo per 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;
}

E anche aggiunto quanto segue a this.defaults

customMap: []

Il, cambiare il metodo seguente:

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

Ultimo ma non meno importante, aggiungere / modificare la segue in $headers.click(function(e) {

Add:

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

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

Quando si init tablesorter passare un customMap[[header_col_id, data_col_id]] Nel tuo caso sarà:

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

Altri suggerimenti

Cosa ci si può aspettare che accada se si fa clic su un colpo di testa che copre tre colonne? Quale colonna si aspetta che per l'ordinamento? In generale, per tablesorter al lavoro, è necessario disporre di un'intestazione per ogni colonna.

sortInitialOrder non sembra essere menzionato sulla pagina web per tablesorter ma esiste nel codice. Ho usato solo questa:

sortList: [[5, 0]]

che inizialmente ordine crescente usando l'5a colonna.

Ho un po risolto il problema, come ho voluto anche solo la tabella per ordinare ascendente solo, ho modificato Linea 536 al this.order = this.count++ % 0; che lo rende sorta come io voglio che.

In relazione alla colspan, ho solo dovuto ricorrere ad avere s' vuoti per poter ordinare rispettive colonne. Esso non può essere corretta marcatura, ma posso vedere nessun altro modo di fissare questo.

ho risolto un problema simile per me stesso con la seguente patch nella tablesorter-codice stesso;

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

Il solo fatto che il mio problema è stato invertito; Ho avuto 2 colonne che abbracciano 1 cella collspanned. Questo risolve tutte le colonne dopo la colonna spanning essendo ancora ordinabili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top