2014-12-17 10 views
6

mit JQuery-Datentabellen.jquery-Datentabellen mehrspaltigen Sortierrichtung

Beispiel: http://jsfiddle.net/b2fLye17/17/

$('#example').DataTable({ 

    filter:false, 
    columnDefs: [ 
        { 
         targets: [1],//when sorting age column 
         orderData: [1,2] //sort by age then by salary 
        } 
       ] 
}); 

Wenn Sie die Alter Spalte klicken, wird die Tabelle sortiert nach Alter aufsteigend dann durch Gehalt aufsteigend.

Welche Möglichkeiten gibt es, um sortiert dann nach Gehalt absteigend nach Alter aufsteigend sein würde?

Danke!

-------------------------- Edit 1 ------------------ ---

Zur Verdeutlichung: Wenn die Alte Spalte aufsteigend sortiert ist es nach Alter aufsteigend dann nach Gehalt absteigend sortieren soll. Wenn die Alte Spalte sortiert absteigend es nach Alter sortieren soll dann nach Gehalt aufsteigend

-------------------------- Edit 2 absteigend - --------------------

Ein Bild von dem gewünschten Ergebnis enter image description here

Antwort

1

Hier ist es. Es ist ein wenig gehackt, aber ich habe Stunden damit verbracht, das gleiche Endziel herauszufinden - das Sortieren von zwei Spalten. http://jsfiddle.net/b2fLye17/23/

<td data-age="40">$320</td> 
//In custom sort: 
var value = parseInt($(td).attr('data-age') + pad(td.innerHTML.substring(1), 10, '0')); 

Konzept: Ich habe keine Möglichkeit, den Zugriff auf andere Zellen außerhalb der Säule in der foreach-Schleife herausgefunden, so fügte ich sortieren off ein „Daten-“ -Attribut auf die Zelle, die wir wollen von. Dieses Datenattribut hat denselben Wert wie die andere Sortierspalte, die uns wichtig ist ... daher gibt es einige doppelte Daten, bis wir herausgefunden haben, wie wir auf andere 'benachbarte' Zellen in der Schleife zugreifen können.

I kombinierte die beiden Werte (verstecktes Attribut und sichtbarer Wert), dann in einen int umgewandelt zurück indiziert werden. Da die Werte unterschiedlich lang sind, füllte ich die zweite Spalte mit Nullen auf (4086 vs 40086).

+0

Mit Ihrem Beispiel konnte ich mein Problem mit einigen Anpassungen lösen. Vielen Dank²! – sebmoi

2

Verwenden

$(document).ready(function() { 

    $('#example').DataTable({ 

     filter:false, 
     columnDefs: [ 
         { 
          orderData: [[1, 'asc'], [2, 'desc']]//sort by age then by salary 
         } 
        ] 
    }); 
}); 

JS Fiddle http://jsfiddle.net/b2fLye17/13/

+0

Es ist nicht, wie Sie in diesem Beispiel sehen können, arbeiten. http://jsfiddle.net/b2fLye17/9/ Danke für Ihre Zeit! – sebmoi

+0

Sie müssen Ziele entfernen - aktualisierte Antwort –

+0

Entfernen von Zielen wird Gehalt nicht sortieren. In dem Beispiel sah es so aus, als ob es funktionierte, weil das Gehalt der Leute im Alter von 40 Jahren bereits im HTML-Code sortiert war. Ich habe 86 $ und 170 $ gewechselt, um es zu testen. Beispiel: http://jsfiddle.net/b2fLye17/14/ – sebmoi

1

Sie können var row = settings.aoData._aData[i]; tun, um alle Daten aus der Zeile zu erhalten und diese mit der j0xue-Lösung zu kombinieren, so dass Sie nach einer anderen Spalte sortieren können, ohne eine Eigenschaft im HTML hinzuzufügen.

1

Vielen Dank für diese Frage ich konfrontiert zu dem gleichen Problem dann wie unten gelöst

var oTable=$('#example').dataTable({ 
filter:false 
}); 

oTable.fnSort([[1,"asc"], [2,"desc"]]); 

Hoffnung ist dies hilfreich

Verwandte Themen