Frage

I Ein paar Probleme mit Tischsorter 2.0.3.

Das erste Problem ist, wenn ich einen Colspan auf meine Tabelle gesetzt habe. Grundsätzlich sortiert ich, wenn ich dies unten tue, die jeweiligen Spalten nicht.

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

Das zweite Problem, das ich habe, ist, dass, egal was ich den SortInitialorder ("Desc" oder "ASC") in den tabellorter.js festlegt, keinen Einfluss darauf hat, die Sortierstufe aufzusteigen oder absteigend zu machen, wenn sie angeklickt wird.

Bitte kann jemand helfen?

War es hilfreich?

Lösung

Um das Problem zu lösen, können Sie Ihre eigene Zuordnung von Headern zu Datendolen erstellen. Folgendes habe ich getan, um die Funktionalität so zu erhalten, wie ich es wollte.

Ich habe die folgende Methode zu tabelsorter.js hinzugefügt:

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

Und fügte auch Folgendes hinzu zu this.defaults

customMap: []

Die folgende Methode ändern:

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

Zu guter Letzt fügen/ändern Sie Folgendes in Folgendes ein $headers.click(function(e) {

Hinzufügen:

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

Veränderung:config.sortList.push([i,this.order]); Zu config.sortList.push([ia,this.order]);

Wenn Sie den Tischsorter initieren a customMap[[header_col_id, data_col_id]] In Ihrem Fall wird es sein:

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

Andere Tipps

Was würden Sie erwarten, wenn Sie auf einen Header über drei Spalten klicken würden? In welcher Spalte erwarten Sie, dass es sortiert? Im Allgemeinen müssen Sie für die Arbeit von Tabellen für jede Spalte einen Header haben.

sortInitialOrder Es scheint nicht auf der Webseite für Tabelsorter erwähnt zu werden, aber im Code existiert es. Ich habe erst zuvor Folgendes verwendet:

sortList: [[5, 0]]

Dies wird zunächst mit der 5. Spalte aufsteigend sortieren.

Ich habe das Problem irgendwie gelöst, da ich auch nur wollte, dass die Tabelle aufsteigend sortiert wurde, habe ich Zeile 536 geändert this.order = this.count++ % 0; Was es sortiert, wie ich es will.

In Bezug auf den Colspan musste ich gerade auf Blank zurückgreifen, damit er die jeweiligen Spalten sortiert. Es ist vielleicht nicht korrekt, aber ich kann keine andere Möglichkeit sehen, dies zu beheben.

Ich habe ein ähnliches Problem für mich mit dem folgenden Patch im Tabellen-Code selbst gelöst.

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

Obwohl mein Problem umgekehrt war; Ich hatte 2 Säulen, die 1 kollispannte Zelle umfassten. Dies behebt alle Spalten, nachdem die Spaltespalte noch sortierbar ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top