2010-10-05 2 views
0

J'ai un groupe de boutons radio dans une grille de données, chaque fois que je tente de changer le bouton radio sélectionné, la page web se bloque. Voici comment j'ai mis en place le bouton radio dans la grille de données. Quelqu'un voit ce qui pourrait être la cause du problème?La grille de données se bloque avec le changement de fournisseur de données

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> 

Renderer

<?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> 

Bouton radio de sélection du gestionnaire d'événements

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 
} 
+0

Est-ce que vous obtenez quelque chose du débogueur avant le crash? Je suis porté à penser qu'il pourrait y avoir un débordement de pile avec votre liaison ... –

+0

Le débogueur ne fournit aucune information supplémentaire. – Mads610

Répondre

0

J'ai eu un question similaire une fois mais ne peut pas sembler se rappeler comment j'ai résolu comme il y a assez longtemps.

1

J'ai obtenu le code à travailler en utilisant l'événement de modification du groupe de boutons radio, plutôt qu'un événement personnalisé/dynamique dans le rendu d'élément de bouton radio. Cependant, je ne comprends toujours pas (si/pourquoi) en utilisant les événements dynamiques causé le problème.

Questions connexes