2016-06-09 9 views
0

Ich muss serverseitige Sortierung auf einem Knockout-Gitter erlauben, ich habe den folgenden Code ohne Glück, irgendeinen Vorschlag ausprobiert ??Serverseitige Sortierung nach Knockout Grid

self.sortInfo = ko.observable(); 
self.sortOnServer = ko.observable(false); 
self.sortInfo.subscribe(function (data) { 
    self.sortOnServer(!self.sortOnServer()); 
    if (!self.sortOnServer()) return; 
    paginationInfo.SortColumnName = self.sortInfo().column.field; 
    if (self.sortInfo().direction === 'desc') { 
     paginationInfo.DescendingSort = true; 
    } else { 
     paginationInfo.DescendingSort = false; 
    } 
    showLoading(); 
    self.getPagedDataAsync(self.pagingOptions.pageSize(), self.pagingOptions.currentPage(), self.filterOptions.filterText()); 
}); 

self.gridOptions = { 
     data: self.results, 
     enablePaging: true, 
     pagingOptions: self.pagingOptions, 
     filterOptions: self.filterOptions, 
     columnDefs: self.columns, 
     displaySelectionCheckbox: false, 
     rowHeight: 20, 
     selectWithCheckboxOnly: true, 
     jqueryUIDraggable: true, 
     useExternalSorting: true, 
     sortInfo: self.sortInfo 
    }; 

und HTML als unten:

<div id="grid" class="gridStyle" data-bind="koGrid: gridOptions"> 
     </div> 

Antwort

0

Dies wird nun sortiert, der Grund, warum der Code oben auf seinem eigenen war nicht funktioniert, weil ich das passieren musste „SortInfo() Spalte“ und "sorInfo(). direction" -Werte zurück zur actionMethode, die die Daten jedes Mal vom Server abruft, wenn das Ko-Grid gerendert wird. Wenn Sie also diese beiden Werte an die entsprechende Aktionsmethode übergeben, verwenden Sie OrderBy <> ... OrderBy <> Absteigend ... mit der "sortinfo()." -Spalte als Schlüssel, all dies als Teil Ihres Server-Codes ... so dass als Ergebnis das Grid w ille präsentiert die Daten wie erwartet und für den gesamten Satz von Zeilen, nicht nur die, die gerade auf dem Bildschirm angezeigt werden.

Verwandte Themen