我在動作腳本中使用itemRenderer作爲datagird列(以特定方式顯示超鏈接形式的數據)。如何在排序後刷新Flex數據網格的項目渲染器?
一切工作正常,直到我排序的DataGrid的任何列!當我進行排序並單擊此列中的項目時,它會將錯誤的數據傳遞給onCustomLink函數。我想它是基於itemRenderer的原始索引傳遞舊數據。不知何故,itemRenderer類(CustomLinkRenderer)不刷新其數據!
我試圖把數據網格的headerRelease上的invalidateDisplayList,ValidateNow(),但沒有幫助!我甚至嘗試在headerRelease()上刷新數據提供者,但沒有幫助...
有人指出我應該怎麼做才能刷新爲headerRelease事件上的此datagrid創建的itemRenderer實例?
private var _col1:DataGridColumn;
var rendr1:ClassFactory = new ClassFactory(CustomLinkRenderer);
_col1.dataField = 'emp_name';
rendr1.properties = {SelCustomLinkName: 'emp_name'};
_col1.itemRenderer = rendr1;
this.addEventListener(CustomLinkRendererEvent.CUSTOM_LINK_RENDERER_EVENT,onCustomLink);
謝謝...
顯示更多的代碼。如果排序是問題,則發佈排序代碼。也聽起來像你的渲染器不能正常工作,所以也發佈代碼。 – 2011-05-31 17:34:20
我通常通過Filter函數手動對數據源(數組集合)進行排序,除了取決於Flex內部排序。由於您正在將數據填充到組件中,然後通過項目渲染將其附加到IList控件,這顯然會導致問題,主要原因可能是由於組件的複雜性。 – Anandh 2011-05-31 19:49:11