Ich versuche Paging mit dem KnockoutJs KOGrid zu machen. Ich habe folgendes verfolgt: Ссылка
Die Daten, die ich in mein Ansichtsmodell (den vm-Parameter) übergebe, enthalten Folgendes:
Mein Knockout-Modell ist wie folgt:
%Vor%Andy meine html (Asp.Net MVC Razor Ansicht) ist:
%Vor%Wenn die Seite geladen wird, wird der folgende Fehler innerhalb von kogrid.js ausgelöst Uncaught TypeError: grid.sortedData.peek (...). filter ist keine Funktion
%Vor%Wenn ich die Eigenschaft sortedData em> des -Grids -Objekts überprüfe, sieht es in Ordnung aus:
Die letzte Zeile meines Knockout-Viewmodels js, das ausgeführt werden soll, ist self.myData (pagedData); innerhalb der Funktion this.SetPagingData em>.
Mit Fiddler habe ich folgendes aus der Antwort vom Server gezogen:
%Vor%Wo bin ich falsch gelaufen?
Sie geben eine ko.observableArray
-Eigenschaft ( myData
) korrekt als data
-Parameter des gridOptions
-Objekts an, jedoch müssen Sie sicherstellen, dass sie immer ein JavaScript-Array enthält.
Knockout überprüft nicht, was Sie in ko.observableArray
eingegeben haben. Sie müssen also sicherstellen, dass Sie immer Arrays verwenden.
In deinem setPagingData
versuchst du jedoch, deinem myData
anstelle eines Arrays ein Objekt zuzuweisen, das diesen Fehler verursacht:
Uncaught TypeError: grid.sortedData.peek (...). filter ist keine Funktion
weil eine einfache JavaScript-Objektbibliothek keine filter
-Funktion hat.
Die Korrektur ist ziemlich einfach, Sie müssen nur pagedData.Rows
als Wert von myData
übergeben:
Nebenbemerkung: Ihre aktuelle Implementierung führt kein ordnungsgemäßes serverseitiges Paging durch. Weil Sie keine Parameter an den Server übergeben und die zurückgegebenen Daten auf der Clientseite verarbeiten.
Tags und Links knockout.js javascript kogrid