簡體   English   中英

排序后如何刷新 flex 數據網格的項目渲染器?

[英]how to refresh the item renderer of a flex datagrid after sorting?

我正在使用 itemRenderer 作為動作腳本中的一列數據網格(以某種方式以超鏈接的形式顯示數據)。

一切正常,直到我對數據網格的任何列進行排序。 當我進行排序並單擊此列中的項目時,它會將錯誤的數據傳遞給 function onCustomLink。 我猜它是根據 itemRenderer 的原始索引傳遞舊數據。 不知何故 itemRenderer class (CustomLinkRenderer) 沒有刷新它的數據!

我嘗試將 invalidateDisplayList, ValidateNow() 放在數據網格的 headerRelease 上,但沒有幫助。 我什至嘗試在 headerRelease() 上刷新數據提供程序,但沒有幫助...

有人可以指出我應該做什么來刷新在 headerRelease 事件上為此數據網格創建的 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);

謝謝...

我有點猜。 我不清楚您提供的代碼片段在代碼中的確切位置。

但是,在我看來,您的 itemRenderer 沒有正確更新自身。 itemRenderer 應該監聽 dataChange 事件; 在對 dataProvider 進行排序時應該調用它。 在你的渲染器里面做這樣的事情:

this.addEventListener('dataChange',onDataChange);

public function onDataChange(event:Event):void{
 // do stuff to update the itemRenderer's display
}

好吧,您的代碼不是很清楚,因為您沒有指定哪個數據網格、您正在使用的項目渲染器或您實際排序的方式。

但是,我很確定您的問題是因為您沒有刷新 ArrayCollection:

arrayCollection.sort();
arrayCollection.refresh();

需要刷新以讓數據網格知道使用新數據更新項目渲染器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM