Как обновить средство визуализации элемента из гибкой таблицы данных после сортировки? - PullRequest
2 голосов
/ 31 мая 2011

Я использую itemRenderer для столбца datagird (для отображения данных в виде гиперссылки определенным образом) внутри сценария действия.

Все работает нормально, пока я не отсортирую любой столбец таблицы данных!Когда я делаю сортировку и щелкаю элемент внутри этого столбца, он передает неверные данные в функцию onCustomLink.Я предполагаю, что это передает старые данные, основанные на оригинальном индексе itemRenderer.Каким-то образом класс itemRenderer (CustomLinkRenderer) не обновляет свои данные!

Я попытался поместить invalidateDisplayList, ValidateNow () в headerRelease таблицы данных, но не помогло!Я даже пытался обновить поставщик данных в headerRelease (), но без помощи ...

Может ли кто-нибудь указать, что я должен сделать, чтобы обновить экземпляры itemRenderer, созданные для этой сетки данных в событии headerRelease?

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);

Спасибо ...

Ответы [ 2 ]

4 голосов
/ 01 июня 2011

Я догадываюсь немного.Мне неясно, где именно фрагмент кода, который вы предоставили, отображается в вашем коде.

Но мне кажется, что ваш itemRenderer не обновляется должным образом.ItemRenderer должен прослушивать событие dataChange;который должен вызываться при сортировке dataProvider.Внутри вашего рендерера сделайте что-то вроде этого:

this.addEventListener('dataChange',onDataChange);

public function onDataChange(event:Event):void{
 // do stuff to update the itemRenderer's display
}
0 голосов
/ 01 июня 2011

Ваш код не очень понятен, так как вы не указываете, какую сетку данных вы используете, средство визуализации элементов или как вы на самом деле сортируете.

Тем не менее, я вполне уверен, чтоваша проблема в том, что вы не обновляете свою коллекцию ArrayCollection:

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

Обновление необходимо, чтобы сообщить сетке данных об обновлении средств визуализации элементов новыми данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...