2016-03-02 82 views
0

我有一個樹型面板,遠程服務提供的數據,我按節點更新我的樹數據。在第一個節點上的數據加載全部渲染速度相對較快,但如果我重新加載節點數據,子節點渲染得太慢。這對於大量的子元素(1000+)變得至關重要。ExtJS Ext.tree.Panel在重複存儲加載時顯示得很慢

我使用ExtJS 4.2.0.663。

據我瞭解它在ExtJS - related sencha forum thread中的一個錯誤。

Simple fiddle從鏈接的論壇主題來說明問題。

我試圖找到我的ExtJS版本的修復程序,但無濟於事(此刻我無法升級ExtJS)。

任何想法如何解決這個問題?

我想我可以嘗試比較不同版本的相關組件的代碼,並對我的ExtJS文件進行更改,但這是一項費力的任務,也許你們中的一些人已經知道這個問題的解決方案。

回答

0

我很確定這是一個佈局問題。因爲我得到這個解決方案必須幫助你。

請嘗試撥打電話treeComponent.suspendLayouts()beforexpand事件和treeComponent.resumeLayouts(true)afterexpand事件。

,如果它不利於全球試着中止機制:

Ext.suspendLayouts(); 
... 
Ext.resumeLayouts(true); 
+0

'beforexpand'和'afterexpand'涉及樹面板,而不是其節點。我想你的意思是'beforeitemexpand'和'afteritemexpand'? –

+0

我的意思是在加載數據之前嘗試暫停佈局,並且在加載數據後繼續它。你做這個動作是你的選擇。主要是做暫停和繼續佈局之前和之後重新加載 – LightNight

+0

我想它不會工作,如果你閱讀在提供的論壇線程上的數據加載ExtJS的問題細節一個接一個地刪除所有的子節點,每個刪除火災佈局更新,所以如果我'resumeLayouts(true)'加載數據時,它不會阻止多個佈局更新,因爲它尚未開始。無論如何生病嘗試你的解決方案,謝謝。 –

0

它在的ext4的TreePanel中的一個基本問題。我們在我們公司的產品和樹面板上使用ExtJS對於大數據作爲子節點來說存在極大的問題。

您可以使用該TreePanel中的bufferedRenderer插件,加快代:

plugins: { 
    ptype: 'bufferedrenderer' 
} 

您更新小提琴:http://jsfiddle.net/qczvjrko/5/

希望它能幫助。

+0

謝謝,我試試。順便說一下,這個問題在ExtJS 5+中解決了嗎? –

+0

是的,它是固定的。 – Tyr