Wenn Sie mit MVVM an ein Kendo UI Grid binden, wird die Datenverbindung einmal ausgelöst und alles ist gut. Wenn Sie diese Daten später aktualisieren müssen, wird jedes Mal, wenn Sie ein Datenelement in einem beliebigen Ansichtsmodell (oder untergeordneten Ansichtsmodell) ändern, das gesamte Raster neu festgelegt. Wenn Sie also eine Zelle im Raster haben, die an eine Vorlage gebunden ist und Sie zwei oder drei Eigenschaften im Ansichtsmodell von einer externen Ajax-Quelle ändern müssen, wird Databound zwei- oder dreimal für jedes geänderte Modell ausgelöst, was die Datei verursacht gesamter sichtbarer Bereich zum erneuten Binden. Wie können wir viele Daten auf einmal aktualisieren und haben nur einmal Datenverbindungsdaten?
Wie genau binden Sie das Grid neu? Grundsätzlich, wenn Sie einige der Modelle wie folgt ändern:
%Vor%Auf diese Weise wird das Grid aufgrund der MVVM tatsächlich zweimal gebunden. Das Änderungsereignis wird jedes Mal ausgelöst, wenn Sie set aufrufen.
Wenn Sie die Werte jedoch wie folgt aktualisieren:
%Vor%Das Grid wird nicht auf die Änderung reagieren und nicht erneut die Werte aus den Modellen lesen, die Sie durch die refresh -Methode dazu zwingen können %Vor%
Ich bin mir nicht sicher, ob es eine Möglichkeit gibt, dem Gitter vorübergehend mitzuteilen, dass es aufhören soll, auf Ereignisse zu hören und dann am Ende einmal erneut zu synchronisieren. Wenn ja, bitte geben Sie diese Antwort hier! Ansonsten, was ich getan habe, ist, dass ich für jedes Element nicht durch .set () gegangen bin. Stattdessen habe ich die Daten für alle Zeilen aktualisiert, indem ich die Daten direkt auf die Eigenschaft gesetzt habe. Als ich dann in die letzte Zeile kam, die ich aktualisierte, rief ich .set () auf der letzten Eigenschaft an, die aktualisiert werden musste. Dadurch wird die Datenverbindung nur einmal ausgelöst und das gesamte Grid wird mit allen geänderten Daten aktualisiert. Wenn Sie dies nicht tun, wird die Verarbeitung um so länger, je mehr Zeilen auf der Seite angezeigt werden. (Es kann mehr als 20 Sekunden dauern, bis der Benutzer wieder etwas tun kann.)
Tags und Links mvvm kendo-ui kendo-grid