en / de
Expertisen
Methoden
Dienstleistungen
Referenzen
Jobs & Karriere
Firma
Technologie-Trends TechCast WebCast TechBlog News Events Academy

ServerPaging/ServerFiltering mit KendoUI

Für eine Schweizer Bank durften wir in Zusammenarbeit mit einem Schweizer ERP-Hersteller eine Schnittstelle zwischen dem Backend der Bank und dem ERP-System realisieren. Über diese Schnittstelle werden alle Transaktionen ins Buchhaltungsmodul des ERP-Systems gebucht.

Die Transaktionen werden vor dem Abbuchen aufbereitet. Die Aufbereitungslogik basiert auf frei definierten Regeln, welche die einzelnen Transaktionen um zusätzliche Attribute (z.B. Transaktiontyp, Produkt, etc.) erweitern. Es existieren rund 20‘000 verschiedene Regeln.

Um alle Regeln zu verwalten, wurde ein Web Frontend mit ASP .NET MVC und mit Hilfe der Usercontrol Library Kendo-UI vom Hersteller Telerik realisiert. Das Backend basiert auf ASP .NET WebAPI.

Über das Web Frontend hat der User die Möglichkeit, nach Regeln zu filtern. Um mit der grossen Datenmenge auf Client-Seite umgehen zu können, wurden ServerPaging und ServerFiltering aktiviert. Standardmässig sind diese beiden Features deaktiviert. Ohne diese Features müsste der Client vorsorglich alle 20’000 Regeln laden, was einen riesigen Overhead verursachen würde.

Im nachfolgenden Beispiel wird gezeigt, was auf Client- und Serverseite angepasst werden muss, um ServerPaging und ServerFiltering zu aktivieren.

Client

Als erstes werden die beiden Optionen auf der Clientseite im View aktiviert:

<script type="text/javascript">
    $(document).ready(function () {
        var transport = new kendo.data.transports.webapi({});
        $("#systemLogs").kendoGrid({
            dataSource: {
                type: "xml",
                serverPaging: true,
                serverFiltering: true,
                transport: {
                    read: function(options) { ... },
                    parameterMap: function (options) {
                        return kendo.stringify(options);
                    },
                },
                pageSize: 20
            },
            height: 750,
            scrollable: {
                virtual: true
            },
            filterable: true,
            sortable: true,
            pageable: true
        });
    });
</script>

Sobald die beiden Optionen aktiviert sind, ruft der Client beim Abfragen der Daten die REST Methode mit zusätzlichen Parametern auf. Nachfolgend werden die Parameter kurz erklärt:

Parameter Beschreibung
page Welche Seite soll zurückgeliefert werden
pageSize Anzahl Elemente, die vom Server zurückgeliefert werden sollen
skip Anzahl Elemente, die in der Liste übersprungen werden sollen
take Anzahl Elemente, die vom Server zurückgeliefert werden sollen (analog pageSize)

Alle Parameter werden als ein DataSourceRequest Objekt (Namespace: Kendo.UI.MVC) zusammengefasst.

Server

Auf Serverseite muss die Web API Methode erweitert werden, damit der DataSourceRequest verarbeitet werden kann.

Als erstes wird der Parameter „request“ vom Datentyp DataSourceRequest definiert mit dem zusätzlichen Attribut „ModelBinder“.

[ActionName("GetData")]
[HttpPost]
public ResponseMessageResult GetData
([System.Web.Http.ModelBinding.ModelBinder(typeof(Kendo.Mvc.UI.WebApiDataSourceRequestModelBinder)
)] Kendo.Mvc.UI.DataSourceRequest request)
{
   try
   {
    	var dataList = _dbHandler.GetData().ToDataSourceResult(request);
        var data = new DataSourceResponse<Entity> {
           Data = (List<Entity>)dataList.Data,
           Total = dataList.Total
        };

var response = ResponseMessage(new HttpResponseMessage(HttpStatusCode.OK) {
   Content = new ObjectContent<DataSourceResponse<Entity>>(data, new
   System.Net.Http.Formatting.XmlMediaTypeFormatter { UseXmlSerializer = true }) });
       return response;
   }
   catch (Exception ex)
   {
	// Error Handling Logic
   }
}

Um anschliessend die korrekten Daten aus dem Backend zu bekommen, muss lediglich die von KendoUI zur Verfügung gestellte Methode ToDataSourceResult aufrufen werden. Allerdings müssen dazu die beiden Dlls „Kendo.DynamicLinq.dll“ und „Kendo.Mvc.dll“ referenziert werden.

Im Beispiel wird die Methode GetData() aufgerufen, diese liefert eine generische Liste vom Typ List<Entity> zurück.

Weitere Ressourcen Links:

http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#configuration-serverFiltering http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#configuration-serverPaging http://docs.telerik.com/kendo-ui/web/grid/how-to/web-api-server-operations

Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Newsletter - aktuelle Angebote, exklusive Tipps und spannende Neuigkeiten

 Jetzt anmelden
NACH OBEN
Zur Webcast Übersicht