我在动作脚本中使用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