Frage

Ich verwende tablesorter Plugin meine Tabellen in einem MVC .NET App zu sortieren. Die meisten meiner Spalten sind Strings und ich habe keine Probleme mit ihnen. Weder mit den numerisch denjenigen. Die Sache ist meine Datetime-Spalten auch sortiert zu werden, als ob sie Strings waren. Sie erhalten wie folgt sortiert:. 01.04.2009, 02.02.2009, 03.08.2009, usw. ich die Daten aus dem Modell in dieser Ansicht erhalten

Mein Ruf ist die Standardeinstellung ein:

$("#table").tablesorter();

Ich habe versucht, Datumsformat ohne Glück Angabe:

$("#table").tablesorter({
            dateFormat: 'dd/mm/yyyy'});

Das Seltsame passiert, wenn ich manuell eine statische Tabelle mit Zufallsdaten eingeben. Es wird sortiert! Aber meine Daten stammen aus einer DB-Aufruf und wird in das Modell setzen, ich dann itreate durch und schreiben tr ist mit den Daten.

Vielen Dank im Voraus.

EDIT: Könnte es etwas im Zusammenhang mit der Art und Weise wird ich die TRs erstellen

<% foreach (var item in Model) { %>
<tr>
<td>
<%= Html.Encode(item.date) %>
</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<% } %>
War es hilfreich?

Lösung

Versuchen Sie, einen Tablesorter Parser Ihre Datumsspalte hinzufügen. Tablesorter kommt mit einem Parser für shortdate, usLongDate und isodate.

$("#table").tablesorter({
    headers: { colNum: { sorter: 'shortDate'} }
});

wo SpaltenNr ist die Spalte mit den Daten. Das einzige Beispiel, das ich auf der tablesorter Website finden könnte, ist hier . Dies funktioniert auch, wenn tablesorter ist Zahlen falsch und zu sortieren. Es gibt noch andere Parser als auch für Prozent, IP-Adresse und vieles mehr. Werfen Sie einen Blick in der Nähe des Endes des Quellcodes und sie werden dort aufgeführt werden.

Edit: Mit Blick auf den Quellcode, erscheint das Datumsformat Option nur für „uns“, „uk“, „TT / MM / JJ“ oder „dd-mm-yy“ zu suchen. Was passiert, wenn Sie versuchen, "uk"?

Andere Tipps

Ich habe das gleiche Problem, und ich fügte einen benutzerdefinierten Parser namens Datetime:

$.tablesorter.addParser({
    id: "datetime",
    is: function(s) {
        return false; 
    },
    format: function(s,table) {
        s = s.replace(/\-/g,"/");
        s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1");
        return $.tablesorter.formatFloat(new Date(s).getTime());
    },
    type: "numeric"
});

Dann brauchen Sie nur dieses Format auf die Spalten anzuwenden, die Sie wollen, wie Gabe G ausgesetzt (zum Beispiel dieser Sortierer zu der ersten Spalte zuweisen Sie Folgendes tun sollten:

$("#mytable").tablesorter( 
    {   dateFormat: 'dd/mm/yyyy', 
        headers: 
            {
                0:{sorter:'datetime'}
            } 
    } ); 

Sie können auch einen versteckten span-Tag vor dem geplanten in numerischem Format (yyyymmdd) hinzuzufügen. Dieser Text wird an erste Stelle und verwendet wird, für die Sortierung, aber es wird vom Anblick versteckt werden und zeigt nur das gewünschte Format.

    <td><span style="display:none">20130923</span>23 September 2013</td>    

Es gibt ein Update für jquery tablesorter Plugin.

Nach dem Gebietsschema der Anwendung, Sie die Daten von diesem Update sortieren.

Sie können anhand des folgenden Link, um die Aktualisierung des tablesorter anzuzeigen.

http://tablesorter.openwerk.de/

Einfachere Weise Gebrauch:

dateFormat:'mm/dd/yyyy hh:mm:ss'

ehrlich die einfachste Lösung zu sein, war für mich, wie compsmart sagte, einigen versteckten Text vor dem tatsächlichen Datum hinzugefügt wird.

  • Datumsformat: 'uk' wurde nicht für mich arbeiten, vielleicht weil mein Datumsformat wieder anders ist
  • http://tablesorter.openwerk.de/ beinhaltet die CSS ändern, zuerst verstehe ich nicht, warum und zweite der Aufwand ist größer als einfache Hinzufügen von verborgenem Text vor dem Datum.

Ich mag die KISS-Lösung von compsmart!

http://mottie.github.io/tablesorter/docs/

Stellen Sie das Datumsformat. Hier sind die verfügbaren Optionen. (Modified v2.0.23).

  • "mmddyyyy" (default)
  • "ddmmyyyy"
  • "yyyymmdd"

In früheren Versionen wurde diese Option als "wir", "uk" oder "TT / MM / JJ" gesetzt. Diese Option wurde zu einer besseren Passform erforderlich Datumsformate geändert. Es wird nur mit vierstelligen Jahren arbeitet!

Der Sortierer sollte in der „Datumsformat“ -Option oder gesetzt werden für eine bestimmte Spalten innerhalb der „Header“ auf „shortdate“ und das Datumsformat eingestellt werden kann. Sehen Sie sich die Demo-Seite zu sehen, es funktioniert.

$(function(){
  $("table").tablesorter({

    dateFormat : "mmddyyyy", // default date format

    // or to change the format for specific columns,
    // add the dateFormat to the headers option:
    headers: {
      0: { sorter: "shortDate" }, // "shortDate" with the default dateFormat above
      1: { sorter: "shortDate", dateFormat: "ddmmyyyy" }, // day first format
      2: { sorter: "shortDate", dateFormat: "yyyymmdd" }  // year first format
    }

  });
}); 

Einzelne Spalten können durch Hinzufügen der folgenden geändert werden (sie alle das gleiche tun), setzt in der Reihenfolge ihrer Priorität (Modified v2.3.1):

  • jQuery Daten data-dateformat = "mmddyyyy".
  • Metadaten class = "{Datumsformat: 'mmddyyyy'}". Dies erfordert die Metadaten-Plugin.
  • Header Option Header: {0: {Datumsformat: 'mmddyyyy'}}.
  • Kopfklassennamen class = "dateformat-mmddyyyy". Insgesamt Option date.

In meinem Fall habe ich verwendet,

$("#myTable").tablesorter({dateFormat: "uk"}) 

für die Version.

Das war die Antwort für mich:

<td data-order=<fmt:formatDate pattern = "yyyy-MM-dd" value = "${myObject.myDate}" />>${myObject.myDate}</td>

Weitere Informationen hier: https://datatables.net/manual/data/

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