2016-05-31 13 views
1

Eine Spalte meiner Tabelle muss eine Verknüpfung basierend auf mehreren Objekteigenschaften rendern. Es vereinfacht Definition würde wie folgt aussehen:jQuery DataTables - Nach Objekteigenschaft sortieren

columns: [{ 
    "data": "obj", 
    "render": function(data, type, row) { 
     return "<a href='" + obj.x + "'>" + obj.y + "</a>"; 
    } 
} ... ] 

Es macht zu machen, wie beabsichtigt, obwohl ich wie die Säule würde auch durch obj.y Eigenschaft sortierbar sein. Dies ist der Punkt, an dem mein Problem beginnt, da ich die Mechanik ein wenig verwirrend gefunden habe, aber vielleicht vergebe ich mir hoffentlich immer noch eine offensichtliche Lösung.

Ich habe versucht, meine benutzerdefinierte Sortierung zu jQuery.fn.dataTableExt.oSort hinzuzufügen, und dann die sType der Spalte festlegen, und sonst Daten-Reihenfolge/Datensortierung Attribut zu jeder Zelle während des Renderns hinzufügen, aber keine von die arbeiteten - die Spalte scheint immer noch ihre Standard-Reihenfolge anzuwenden.

Gibt es einen empfohlenen Ansatz, den ich versuchen sollte? Ich verwende Plugin-Version 1.10.

Antwort

1

Wenn ich richtig verstanden habe, hat die Renderfunktion einen type Parameter nur für solche Fälle.

Dieser Parameter verwendet Werte wie "display", "sort", "filter", die den Kontext angeben, in dem die Daten gerendert werden.

Also in Ihrem Fall sollten Sie, wenn type === 'sort' überprüfen und dann wieder die Daten, die Sie Datentabellen zu prüfen, wenn sie von dieser Spalte Sortierung:

"render": function(data, type, row) { 
    if(type==='sort'){ 
     return obj.y; 
    } 
    return "<a href='" + obj.x + "'>" + obj.y + "</a>"; 
}