2016-04-28 6 views
2

Ich habe ein Kendo-Gitter mit einer numerischen Spalte mit einem Format, um nur 1 Dezimalstelle anzuzeigen. Das Gitter wird richtig abgerundet oder abgerundet und zeigt die korrekte Anzahl von Dezimalstellen an. Das Problem, das ich habe, ist, dass wenn ich versuche, auf diese Spalte zu filtern, der Filter den tatsächlichen Wert in der Datenmenge und nicht den gerundeten Anzeigewert verwendet. So für z.B. Wenn der Datensatz einen Wert von 11,61 hat, wird der Wert als 11,6 angezeigt. Wenn ich 11.6 im Filter mit einem equals verwende, zeigt das Raster keine Datensätze an. Ich muss 11.61 eingeben, damit der Filter richtig funktioniert. Ich habe ein Beispiel für ein Dojo erstellt, das dies in Aktion zeigt. http://dojo.telerik.com/@elyons_nic/iyuPOversucht, eine Kendo-Grid-Spalte zu filtern, die ein Format hat

Danke, Eric

Antwort

0

Der einfachste Weg, dies zu tun wäre, die Zahlen in Ihrem Datensatz rund sein, anstatt sie auf der Client-Seite der Rundung. Sie können auch den rohen und den gerundeten Wert an die Client-Seite senden, wenn Sie mit beiden arbeiten müssen (nur die abgerundete Spalte für den Benutzer anzeigen).

Eine weitere Option wäre die Implementierung einer eigenen DataSource-Filterlogik. Seltsamerweise bezieht sich die Dokumentation von Kendo auf filter operator nur als String und scheint (offiziell) keine Funktion zu erlauben. Wenn Sie jedoch für Google es, werden Sie feststellen, dass viele Menschen erfolgreich ihre eigene Logik erstellt haben (siehe diese blog)

Grundsätzlich Sie haben den Filter manuell wie folgt festgelegt:

dataSource.filter([{ 
    field: 'YourField', 
    operator: function (dataItem, filterValue) { 
     //Untested... just make sure to return true if the dataItem match your custom filter logic 
     return filterValue.toFixed(1) == dataItem; 
    }, 
    value: 16.1 
}]); 

Die größte Herausforderung besteht darin, das richtige Ereignis zu finden, um den vom Benutzer erstellten Filter durch einen eigenen Filter zu ersetzen.