数据网格崩溃,数据提供商发生变化

时间:2010-10-05 18:03:58

标签: flex actionscript-3

我在数据网格中有一个单选按钮组,每当我尝试更改所选单选按钮时,网页崩溃。下面是我如何将单选按钮放在数据网格中。任何人都可以看出问题的原因是什么?

MXML

<mx:Accordion>
<fx:Declarations>
<s:RadioButtonGroup id="cover"/>
</fx:Declarations>
<fx:Script>
<![CDATA[[
[Bindable] public var arrColl = new ArrayCollection();
arrColl.addItem(new ObjectProxy({name:"Jon Doe", position:1, cover:true, group:cover}));
arrColl.addItem(new ObjectProxy({name:"John Smith", position:2, cover:true, group:cover}));
]]>
</fx:Script>
<fx:Binding source="{dg.dataProvider as ArrayCollection}" destination="{arrColl}"/>
<mx:DataGrid id="dg" dataProvider="{arrColl}" ..>
...
</mx:DataGrid>

渲染

<?xml version="1.0" encoding="utf-8"?>
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"                    xmlns:s="library://ns.adobe.com/flex/spark" 
xmlns:mx="library://ns.adobe.com/flex/mx" 
focusEnabled="true">
<fx:Script>
<![CDATA[
import mx.events.DynamicEvent;
public function selection(event:MouseEvent):void
{
var selectionEvt:DynamicEvent = new DynamicEvent("selectionEvt", true);
selectionEvt.data = this.data;
dispatchEvent(selectionEvt);
}
]]>
</fx:Script>
<s:RadioButton label="Cover" group="{data.group}" selected="{data.cover}" click="selection(event)"/>
</s:MXDataGridItemRenderer>

单选按钮选择事件处理程序

private function updateDp(event:DynamicEvent):void
{
if (event.type == "selectionEvt")
{
for (var i:int = 0; i < editGrid.dataProvider.length; i++) 
{
editGrid.dataProvider.getItemAt(i).cover = false; // Unselect all members of radio button group 
}
var index:int = editGrid.dataProvider.getItemIndex(event.data);
editGrid.dataProvider.getItemAt(index).cover = true; // Select target radio button
}

2 个答案:

答案 0 :(得分:1)

我通过使用单选按钮组的更改事件获得了代码,而不是单选按钮项呈示器中的自定义/动态事件。但是,我仍然不太明白(如果/为什么)使用动态事件导致问题。

答案 1 :(得分:0)

我曾经遇到类似的问题,但似乎无法回想起我在很久以前就已经解决了这个问题。