2010-03-03 31 views
2

我們有一個Flex DataGrid,其中有3列,其中一列具有自定義內聯項目渲染器,該渲染器通過圖像組件呈現圖標,具體取決於行中的數據。使用自定義項目渲染器對datagrid列進行緩慢排序

現在的問題是,排序這個列是非常慢。當我們只有幾行數據時是可以的,但只要我們有幾百或幾千行,我們就會注意到幾秒鐘的凍結。

有沒有人注意到這一點,並遇到同樣的問題。如果是這樣,你覺得有什麼好的解決辦法嗎?我知道我們可以限制數據提供者中的行數,但我真的在尋找解決根本問題的方法。

-

更新:在解決方案的一些信息:我們有這個問題實際上不是由項目渲染而引起的。由於我們在該列中只有2個不同的值,因此在大型數據集上排序非常慢。解決方案是編寫一個自定義比較函數,並將其他一些屬性附加到所比較的值以使其更加明確。

回答

4

我還沒有看到這與項目渲染器,但我肯定看到排序變得緩慢,當列中的數據非常相似。例如在我的Census benchmark app中,性別列的排序比Id列的要慢得多。有一個known bug有一個解決方法。

如果這不是問題,他們只需要優化您的項目渲染器。查看默認DataGridItemRenderer的代碼來查看優化渲染器的示例。

+0

不管DataProvider中有多少項目,使用的ItemRenderer的影響是否應該相似?我認爲它們正在被回收,所以一旦它們填滿了數據網格的整個可見部分,它們的性能應該是不變的。我猜他們的數據只是在排序結束後才改變,或者情況並非如此? –

+0

看來我們有同樣的問題。該列僅包含2個可能的值,並且它排序非常慢且具有很多值(O(n2)最糟糕的情況,因爲它使用QuickSort)。解決的辦法是編寫自定義比較函數,並將其他一些屬性附加到該值以使其更加明確。謝謝詹姆斯! –

+0

酷!我很高興就是這樣。我希望FP以某種方式解決這個問題。 –

相關問題