Wie verhindert man, dass Kendo UI Grid beim Aktualisieren von ViewModels mehrmals neu bindet?

8

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?

    
Daniel Lorenz 22.03.2013, 21:08
quelle

3 Antworten

9

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%     

Petur Subev 22.03.2013, 21:22
quelle
1

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.)

    
Daniel Lorenz 22.03.2013 21:08
quelle
1

Es sieht so aus, als ob das DataBinding-Ereignis eine Bindung an das Gitter verhindert.

Telerik Online-Dokumente

    
Matt Bell 21.03.2014 17:35
quelle

Tags und Links