2016-09-15 2 views
0

Ich habe ein Raster, das einen gepufferten Renderer verwendet.Aktivieren/Deaktivieren des gepufferten Renderings zur Laufzeit

Zum Drucken kopiere ich das Raster-DOM in ein neues Fenster und sende es an den Drucker. Damit dies funktioniert, muss das DOM komplett gerendert werden, aber mit einem gepufferten Renderer ist dies nicht der Fall.

Wenn ich muss, ich werde gepufferten Renderer vollständig deaktivieren, aber da nur ein paar Benutzer die Druckfunktion verwenden, würde ich es vorziehen, nicht zu.

Gibt es eine Möglichkeit, den bufferedRenderer vor dem DOM-Abruf vorübergehend auszuschalten und danach wieder einzuschalten?

Antwort

3

Ich bin mir nicht sicher, wie es Ihnen hilft, aber ich habe diese ähnliche Sortierung vorgenommen, indem ich die Ansichtsgröße zur Laufzeit vergrößert habe.

Lets nehme an, Sie Renderer mit dieser Konfiguration gepuffert haben:

ptype : 'bufferedrenderer', 
trailingBufferZone : 20, 
leadingBufferZone : 50 

dynamisch So können Sie die Bildgrösse zur Laufzeit festgelegt durch die Referenz-Plugin Installation und Verwendung von setViewSize (newSize) -Methode.

zB:

var dd=Ext.ComponentQuery.query("#ExampleTreePanel")[0]; 
var bufferedRendererPlugin = dd.plugins[0]; 
bufferedRendererPlugin.setViewSize(100000); 

Diese Größe ist nur eine große Zahl, die wir so annehmen können, dass der DOM vollständig geladen sein wird, und Sie können es zu print.Its eine Abhilfe geben. Auch hier können Sie die Größe der Ansicht ändern, indem Sie sie auf eine kleine Zahl setzen.

bufferedRendererPlugin.setViewSize(115); 
+0

Welche Version von ExtJS haben Sie verwendet? Die Idee war gut, aber ich habe das Problem, dass die Ansicht nicht korrekt aktualisiert wird. In meiner ExtJS 6.0.1 App enthält der grid-item-container das vollständige DOM aller Einträge, enthält aber auch: style = "width: 665px; transform: translate3d (0px, 19710px, 0px);", was für eine ungerade 18 leere Seiten zwischen dem Grid-Header und dem Rasterinhalt. Ich bin mir nicht sicher, ob das ein Fehler in ExtJS ist oder nicht. – Alexander

+0

Eigentlich arbeite ich an der Version 4.2. – Saloo

0

Ich habe die gute Antwort von Saloo angepasst, einige Dinge zu arbeiten, um die 4 zwischen ExtJS 6 und ExtJS verschieden sind:

// Set view size to match store content: 
this.bufferedRenderer.setViewSize(this.getStore().getCount()); 
// Refresh view, so that everything is rendered: 
this.bufferedRenderer.refreshView(0); 
// refreshView does not revert the node container's "translate" setting after the viewSize was changed to be equal or greater than the store count, so we have to enforce it manually: 
this.getView().getEl().down(this.getView().getNodeContainerSelector()).translate(0,0,0);