2016-09-15 6 views
0

でレンダリングバッファリングを無効/有効にします。は、私は、バッファレンダラを使用しているグリッドを持って実行

は、印刷のために、私は新しいウィンドウにグリッドDOMをコピーして、プリンタに送信します。これを行うには、DOMを完全にレンダリングする必要がありますが、バッファリングされたレンダラーを使用すると、DOMは完全にレンダリングされません。

私がしている場合は、私は完全にバッファリングされレンダラを無効にしますが、ごく少数のユーザーが印刷機能を使用するので、私がいないことを好むだろう。

DOMを取得する前にbufferedRendererを一時的にオフにすると、上の後で戻ってそれを切り替えることが可能性はありますか?

答えて

3

私はそれはあなたをどのように役立つかわからないが、私は、実行時にビューのサイズを増やすことで、この同様の並べ替えを行っています。

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

ので、動的に、あなたはプラグインの参照を取得し、setViewSize(NewSizeパラメータ)メソッドを使用して、実行時にviewsizeを設定することができます。

は、この設定でレンダラをバッファリングしたとします。

例:

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のアプリでは、グリッド・アイテム・コンテナは、すべてのエントリの完全なDOMが含まれていますが、また、 'スタイル=「幅:665px;変換:translate3d(0PX、19710px、0PX);」が含まれている'、になりグリッドヘッダーとグリッドコンテンツの間に18の空白ページがあります。これがExtJSのバグかどうかは分かりません。 – Alexander

+0

実際、私は4.2版で作業しています。 – Saloo

0

私はExtJSの6とExtJSの4の間で異なっているいくつかのことを回避するためにSalooにより良い答えを適応している:

// 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); 
関連する問題