2016-09-15 4 views
0

У меня есть сетка, использующая буферный рендеринг.Включить/отключить буферизованный рендеринг во время выполнения

Для печати я копирую сетку DOM в новое окно и отправляю ее на принтер. Чтобы это сработало, DOM должен быть полностью рендерен, но с буферизированным рендерером это не так.

Если мне нужно, я полностью отключу буферизованный рендерер, но, поскольку только некоторые пользователи используют функцию печати, я бы предпочел не делать этого.

Есть ли возможность временно отключить буферизованный Renderer перед извлечением DOM и затем включить его обратно?

ответ

3

Я не уверен, как он вам помогает, но я сделал этот подобный вид, увеличив размер представления во время выполнения.

Позволяет предположит, что вы буферном визуализатор с этой конфигурацией:

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

Так динамически, вы можете установить viewsize во время выполнения, получив ссылку на плагин и используя метод setViewSize (NewSize).

например:

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

Это большой размер просто большое число, которое мы можем предположить, так что DOM будет полностью загружена, и вы можете дать ему print.Its обходной путь. Снова вы можете изменить размер представления, установив его на небольшое число.

bufferedRendererPlugin.setViewSize(115); 
+0

Какую версию ExtJS вы использовали? Идея была хорошей, но у меня есть проблема, что представление не обновляется корректно. В моем приложении ExtJS 6.0.1 контейнер grid-item содержит полный DOM всех записей, но также содержит 'style = 'width: 665px; transform: translate3d (0px, 19710px, 0px);" ', что делает нечетные 18 пустых страниц между заголовком сетки и содержимым сетки. Я не уверен, что это ошибка в ExtJS или нет. – Alexander

+0

На самом деле, я работаю над версией 4.2. – Saloo

0

Я приспособил хороший ответ на Saloo работать вокруг некоторых вещей, которые отличаются между ExtJS 6 и ExtJS 4:

// 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); 
Смежные вопросы