Question

Je quelques problèmes en utilisant tablesorter 2.0.3.

Le premier numéro est quand je mets un colspan sur ma table. En fait, quand je le fais comme ci-dessous, il ne trie pas les colonnes respectives.

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

La deuxième question que j'ai est que peu importe ce que je mets le sortInitialOrder ( « desc » ou « asc ») dans les tablesorter.js, il n'a pas d'effet à faire le tri croissant ou décroissant quand on clique dessus sur.

S'il vous plaît quelqu'un peut-il aider?

Était-ce utile?

La solution

Pour résoudre le problème que vous pouvez créer votre propre cartographie des en-têtes de données à Col.. voici ce que je l'ai fait pour obtenir la fonctionnalité de la façon dont je voulais.

J'ai ajouté la méthode suivante pour 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;
}

Et aussi ajouté ce qui suit à this.defaults

customMap: []

, changer le mode suivant:

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

Last but not least, ajouter / modifier ce qui suit dans $headers.click(function(e) {

Ajouter:

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

Changement: Pour config.sortList.push([i,this.order]); config.sortList.push([ia,this.order]);

Lorsque vous initialiser le tablesorter passer un customMap[[header_col_id, data_col_id]] Dans votre cas, il sera:

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

Autres conseils

Qu'est-ce que vous attendez de se produire si vous avez cliqué sur un en-tête couvrant trois colonnes? Quelle colonne attendez-vous à trier sur? En général, pour tablesorter à travailler, vous devez avoir un en-tête pour chaque colonne.

sortInitialOrder ne semble pas être mentionné sur la page web pour tablesorter mais il existe dans le code. Je n'ai déjà utilisé ceci:

sortList: [[5, 0]]

qui d'abord trier par ordre croissant en utilisant la 5ème colonne.

Je suis un peu résolu le problème, car je voulais aussi la table pour trier par ordre croissant seulement, je Ligne 536 à modifiée this.order = this.count++ % 0; ce qui en fait sorte que je veux.

En ce qui concerne la colspan, je viens d'avoir recours à avoir « s en blanc pour ce pour trier les colonnes respectives. Il ne peut pas être le balisage correct, mais je ne vois aucune autre façon de fixer cela.

J'ai résolu un problème similaire pour moi-même avec le patch suivant dans le code tablesorter soi;

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

Allthough ma question a été inversée; J'ai eu 2 colonnes couvrant 1 cellule collspanned. Cela corrige toutes les colonnes après la colonne enjambée étant toujours sortable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top