wake-up-neo.net

Jquery Datatables-Spaltenwiedergabe und -sortierung

Ich arbeite mit einer Datentabelle, die eine Spalte mit Mysql-Zeitstempeln im Format YYYY-MM-DD HH:MM:SS enthält. Meine Tabelle ist so eingestellt, dass sie zunächst nach dieser Spalte sortiert wird. Datenbestände erkennen das Format der Zeitstempel automatisch und sortieren entsprechend.

Ich versuche jetzt, das Erscheinungsbild dieser Spalte so zu ändern, dass sie benutzerfreundlicher ist, jedoch nicht die Art und Weise beeinflusst, in der sie sortiert wird. Also benutze ich die columns.render-Funktionalität wie folgt:

{
        "data":"created_at",
        "name":"date",
        "visible":true,
        "title":"Date Created",
        "render": function(data, type, full, meta){
                var date = new Date(data);
                var options = {year: "numeric", month: "long", day: "numeric"};

                return date.toLocaleDateString('en-US', options);
        }
}

Sobald ich dies tue, funktioniert das Sortieren nicht mehr korrekt. Ich hatte den Eindruck, dass die render-Funktion nur die Anzeige der Daten beeinflussen soll, sie jedoch immer noch nach den zugrunde liegenden Daten des Datenobjekts dieser Zeile sortiert werden sollte. Dies sind die Dokumente, die ich verwenden möchte ( http://datatables.net/reference/option/columns.render ).

Weiß jemand, wie ich anhand des tatsächlichen Zeitstempels sortieren kann, aber ein benutzerfreundlicheres Datum anzeigt?

19
flyingL123

Ich denke ich habe es. Ich musste der Renderfunktion nur sagen, dass sie nur mit "Display" -Typen arbeitet:

{
        "data":"created_at",
        "name":"date",
        "visible":true,
        "title":"Date Created",
        "render": function(data, type, full, meta){
                if(type == "display"){
                        var date = new Date(data);
                        var options = {year: "numeric", month: "long", day: "numeric"};

                        return date.toLocaleDateString('en-US', options);
                }

                return data;
        }
},
34
flyingL123

Wenn es sich um eine serverseitige Datentabelle handelt, können Sie einen Json editieren, bevor er übergeben wird )
HINWEIS: In den neuen Datentabellen handelt es sich um eine eingebaute Funktion namens formatier, die dasselbe tut, aber Sie können benutzerdefinierte Funktionen wie diese verwenden

if ($j == 6) {
  if ($data[$i][$columns[$j]['db']] == 1) {
      $data[$i][$columns[$j]['db']] = '<label class="btn-danger disabled btn">Stopped</label>';
  } else {
      $data[$i][$columns[$j]['db']] = '<label class="btn-success disabled btn">Running</label>';
  }

hier bearbeite ich einfach eine 0 und 1 in meiner db zu einem Label Stopped and Running
Sie können so etwas wie parse_date tun und ein neu formatiertes speichern

0
Rohit Hazra