2011-05-17 74 views
0

這非常令人沮喪。我正在使用一個單獨類(彈出,這意味着它不會忘記最後使用的變量),它包含一個數據網格。我正在使各種列可見/不可見,根據從數據庫調用收到的數據設置寬度和標題。一切正常,除了當我在改變列寬的點之前和之後放置斷點時,我根本沒有看到datagrid寬度的變化!相反,我看到一些值與datagrid列的寬度完全不同步!然而,因爲它是一個單例類,所以下次我調用這個彈出框時,會看到我在上次調用中設置的寬度。無法在flex數據網格中動態更改列寬

我一定在搞調用setWidth()函數(這是我的自定義函數,它改變了動作腳本中datagrid的寬度)。我應該把這個功能稱爲什麼?我嘗試了creationComplete,show和setter中的dataprovider。沒有幫助...

我一直保持水平滾動政策'關閉'(把它完全打亂了它)。

如果我做datagrid.validateNow(),它沒有幫助!如果我在改變之前和之後放置斷點,爲什麼我看不到寬度改變立即反映出來。有人請告訴我我在這裏做錯了什麼。

謝謝。

回答

1

首先你要指出你自己這裏可能是錯的。

1)當你當組件是可見的更新寬度=>無變化

2)當關閉彈出並重新打開此它是確定,這也意味着該項目已被重新呈現,而這不是第一次。這意味着你必須自己嘗試並觸發它。

下面是一些有關flex組件生命週期的有用鏈接。這些應該可以幫助你找出哪些方法可以調用和/或覆蓋。

http://weblog.mrinalwadhwa.com/2009/06/21/flex-4-component-lifecycle/

http://www.slideshare.net/rjowen/adobe-flex-component-lifecycle-presentation

而且,你永遠不應該調用validateNow(直接),但使用無效的方法來代替。

我想在這種情況下,你需要觸發組件的測量,所以致電 invalidateSize()應該沒問題。

乾杯

+0

[噹噹組件是可見的更新寬度=>無變化] ...則如何更改寬度如果組件是在一個單獨的類(這意味着存儲器具有靜態它的副本)...是否有重建數據網格的功能,即重新繪製屏幕上的數據網格?謝謝... – Tintin 2011-05-17 16:40:56

+0

是的,你 1)設置DataGrid的大小在單身 2)調用關於組件的生命週期重繪等invalidateSize() 更多信息幻燈片 – 2011-05-17 17:01:15

+0

調用invalidateSize()在什麼時候?謝謝。 – Tintin 2011-05-17 17:39:49