请按照我的解释:
有人有解决方案吗?
答案 0 :(得分:0)
如果您的按钮项呈示器是自定义的,您可能只需要覆盖“设置数据”。重新使用itemrenderer并在排序时更改数据。项目渲染器本身不会移动。
发布项目渲染器的代码,我们可以提供更好的答案。
答案 1 :(得分:0)
谢谢你的帮助。
但是,无论如何我都没有自定义按钮。它只是flex中的一个常用按钮,但我确实通过使用itemrenderer将它放在一列中。这是在网格中构建按钮控件的代码
protected function redispatch(sourceEvent : Event ) : void {
var newEvent : DynamicEvent = new DynamicEvent("aButtonWasClicked",true);
newEvent["commentClickedEvent"] = sourceEvent;
dispatchEvent(newEvent);
}
private function dispatchButtObj(sourceEvent:Event):void{
var newEvent : DynamicEvent = new DynamicEvent("aButtonWasCreated",true);
newEvent["commentCreatedEvent"] = sourceEvent;
dispatchEvent(newEvent);
}
]]></mx:Script>
<mx:Button label="Comment" height="20" width="48" textAlign="center" creationComplete="dispatchButtObj(event)" click="redispatch(event)"/>
这就是我如何使用它
<mx:DataGridColumn headerText="Action" itemRenderer="com.myitem.controls.CommentButton" width="118" editable="false"/>
答案 2 :(得分:0)
如果网格有滚动条,则总是重复使用ItemRendrer,因此导致了奇怪的行为。
阅读有关ItemRenderer生命周期的好文章: Peter Ent {/ 3}} {/ 3}
答案 3 :(得分:0)
听起来你没有正确地重新初始化你的渲染器。每次实现自定义itemRenderer时,最好是覆盖数据访问器(字面数据)。然后,例如,如果“blue”属性为true,则将蓝色的uicomponent着色,您不应该考虑这一点,否则,uicomponent不会着色,因为itemRenderers会回收每个基于列表的组件的内容。也许这个特定的渲染器刚好被分配给另一个数据对象,然后可能uicomponent已经是蓝色。见?