Datagrid 中的 Itemrenderer 显示错误
我有一个带有 itemrenderer 组件的数据网格。 itemrenderer 中有一个按钮,应显示在数据网格的每隔一行中。 编译后是这样的。
当我滚动数据网格时,按钮显示不正确,为什么?
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
[Bindable]
private var _ac:ArrayCollection = new ArrayCollection();
private function applicationComplete(e:FlexEvent):void{
for (var i:Number = 0; i < 100; i++ ) {
var b:Boolean = (i % 2) ? true : false;
_ac.addItem({text:'foo' + i, showBtn:b});
}
}
]]>
</fx:Script>
<mx:DataGrid id="datagrid" dataProvider="{_ac}" width="200">
<mx:columns>
<mx:DataGridColumn headerText="Text" dataField="text" />
<mx:DataGridColumn headerText="Edit" >
<mx:itemRenderer>
<fx:Component>
<mx:Canvas>
<fx:Script>
<![CDATA[
override public function set data(value:Object):void {
super.data = value;
if(value != null){
if (data.showBtn == false) editBtn.visible = false;
}
}
]]>
</fx:Script>
<s:Button id="editBtn" label="edit" />
</mx:Canvas>
</fx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
I have a datagrid with an itemrenderer component.
In the itemrenderer is a button which should be displayed in every second row of the datagrid.
It appears that way after compiling.
As soon as I scroll the datagrid the buttons are displayed incorrectly, why??
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
[Bindable]
private var _ac:ArrayCollection = new ArrayCollection();
private function applicationComplete(e:FlexEvent):void{
for (var i:Number = 0; i < 100; i++ ) {
var b:Boolean = (i % 2) ? true : false;
_ac.addItem({text:'foo' + i, showBtn:b});
}
}
]]>
</fx:Script>
<mx:DataGrid id="datagrid" dataProvider="{_ac}" width="200">
<mx:columns>
<mx:DataGridColumn headerText="Text" dataField="text" />
<mx:DataGridColumn headerText="Edit" >
<mx:itemRenderer>
<fx:Component>
<mx:Canvas>
<fx:Script>
<![CDATA[
override public function set data(value:Object):void {
super.data = value;
if(value != null){
if (data.showBtn == false) editBtn.visible = false;
}
}
]]>
</fx:Script>
<s:Button id="editBtn" label="edit" />
</mx:Canvas>
</fx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于渲染器在滚动时会被重用,因此您需要将其切换回可见状态。
更改
为
或者简单地使用以下语法:
Because the renderer is reused upon scrolling, you need to switch it back to visible.
Change
to
Or simply use this syntax: