2013-09-25 7 views

Antwort

1

Die mit dem Code arbeiten avilable in http://jsbin.com/egoneWe/3/edit

+0

Ersetzen Sie einfach die Nullen mit der Zeichenfolge, die Sie möchten, mit der Vorlagenfunktion. Danke JPN, das war ein sehr hilfreicher Beitrag für mich. – ADH

0

Stellen Sie die Feldwerte als Zahlen ein. Fügen Sie dann bei Bedarf die Zeichenfolge zum Zeitpunkt der Anzeige hinzu.

Bitte beziehen diese um Hilfe: sorting numbers (dollar amt and percentage) not working

+0

aaron - Wie kann ich die Zeichenfolge zum Zeitpunkt der Anzeige hinzufügen? Kannst du bitte etwas ausarbeiten? – JPN

0

Soweit ich weiß, gibt es nicht eine Möglichkeit, Ihre eigene Sortierfunktion Ihr für ein Feld zu erstellen. Ich habe http://sympletech.com/how-to-enable-case-insensitive-sorting-on-kendo-ui-grid/ gefunden, wo jemand etwas wie das, was Sie fragen, implementiert hat (er machte nur Fall in-sensitive Sortierung).

Ich musste dies einmal tun (zum Glück auf einem nicht editierbaren Raster, zeigte nur Daten), und ich habe nur irgendwie das Raster mit einer Vorlage ausgetrickst. Indem Sie die Daten vor dataBound durchgehen, eine weitere Eigenschaft hinzufügen, die die Daten darstellt, die ordnungsgemäß sortiert werden, und das Gitter an diese Spalte anstatt an die ursprüngliche Spalte binden, aber eine Vorlage verwenden, die den ursprünglichen Datenwert zurückgibt.

Siehe jsbin http://jsbin.com/ETaZOSu/1/edit

+0

Von Ihrem Jsbin konnte ich nicht verstehen, von wo Sie valueTemplate (e) – JPN

+0

In der Spalte Sammlung auf dem Gitter aufrufen. Spalten: [ {Feld: "Name", Titel: "Name"}, {Feld: "Sortieren", Titel: "Wert", Vorlage: valueTemplate} ] –

6

Sie ihnen eine benutzerdefinierte Funktion vergleichen mit sortieren. Hier ist ein Beispielcode, welche Elemente setzen mit 'N/A' oben:

$("#grid").kendoGrid({ 
    dataSource: [ 
    { price: 1 }, 
    { price: "N/A" }, 
    { price: 20 }, 
    { price: 2 } 
    ], 
    sortable: true, 
    columns: [ 
    { 
     field: "price", 
     sortable: { 
     compare: function(a, b) { 
      var x = a.price; 
      var y = b.price; 

      if (x == 'N/A') { 
      x = 0; 
      } 

      if (y == 'N/A') { 
      y = 0; 
      } 

      return x - y; 
     } 
     } 
    } 
    ] 
}); 

Hier ist eine Live-Demo: http://jsbin.com/urUXOCa/1/edit

+0

Diese Demo funktioniert gut und ich habe es bearbeitet und hinzugefügt wenige weitere Werte und es funktioniert perfekt. Aber die gleiche Logik funktioniert nicht für mich. Ich denke, der Grund könnte sein, dass ich jQuery nicht verwende und Angular-Kendo verwerfe. Irgendeine Idee, wie man diese sortierbar macht: {compare: ....}} Arbeiten mit angular-kendo – JPN

+0

In dem Beispiel, wie erhalten wir dynamisch die Spalte a.price. Ungefähr, wie man das Wertfeld in var x = a. $ Feld holt (etwas so). Ist das möglich – JPN