Implementieren einer benutzerdefinierten sSortType-Funktion und Sortierfunktion für jQuery-Datentabellen

7

Mir fällt es schwer, den Anweisungen auf der Seite Dokumentation zu folgen. Ich habe eine Tabelle, die die durchschnittlichen Zeitdauern in einer Spalte im Format HH: MM anzeigt, z. B. 10:45 bedeutet zehn Stunden und fünfundvierzig Minuten. Ich möchte meine gesamte Tabelle nach den Werten in dieser Spalte sortieren können.

Hier ist mein Initialisierungscode:

%Vor%

Hier ist, was I ASSUME der richtige Weg ist, um eine neue Sortierfunktion und einen neuen sSortType in meine Tabelle einzufügen:

%Vor%

Ich nehme an, dass es eine viel bessere Möglichkeit gibt, die Anzahl der Minuten zu extrahieren, als ich es tue, aber angenommen, mein Algorithmus ist gültig. Was muss ich tun, um meine Datentabelle richtig zu initialisieren und diese Sortierfunktion und den Datentypen darin zu integrieren? Die Tabelle selbst wird richtig gerendert, aber wenn ich versuche, die fragliche Spalte zu sortieren, sortiert sie sich lexikographisch, als wäre sie eine Zeichenkette. Irgendwelche Ideen?

    
programstinator 24.12.2013, 11:06
quelle

2 Antworten

19

Sie sollten sowohl eine <type>-asc -Methode als auch eine <type>-desc -Methode angeben.

Die Sortierung basiert dann auf der Eigenschaft sType der Spalte:

%Vor%

Hier ist ein einfaches Beispiel jsFiddle .

    
MasterAM 24.12.2013, 13:26
quelle
2

Um zu erweitern, was MasterAM in einer früheren Antwort gesagt hat, hier ist, wie ich mein Problem vollständig gelöst habe:

  • Zuerst Wenn Sie mit einem benutzerdefinierten Datentyp arbeiten, benötigen Sie eine Typ-Erkennungsmethode, wie sie im dedizierten Dokument gefunden wird. Seite . Die Methode muss vor der init-Methode dataTable platziert werden. So sieht meine Methode aus, unter Berücksichtigung des HH: MM-Formats, das ich analysieren muss:

    %Vor%

    Ich habe meinen Datentyp duration entsprechend benannt.

  • Zweite , Sie müssen die aufsteigenden und absteigenden Sortierfunktionen implementieren, wie die, die ich in die Frage eingegeben habe (jetzt korrekt bearbeitet), die AUCH vor der init-Methode platziert werden sollte.

  • Schließlich müssen Sie der init-Methode dataTable mitteilen, dass der Datentyp in der gewünschten Spalte erwartet wird. Dies geschieht im Array aoColumns . In meinem Fall würde dies bedeuten:

    %Vor%

    Die asc und desc werden angehängt, sobald der Benutzer auf die Überschrift der Spalte klickt, und deshalb schrieb ich nur duration in die letzte Zeile.

programstinator 24.12.2013 14:30
quelle

Tags und Links