2010-02-09 3 views
0

J'ai un problème avec une case à cocher dans mon DataGrid. Il tire dans un fournisseur de données (fichier xml) et je l'utilise pour définir la sélection de case à cocher avec un itemrenderer personnalisé. Ensuite, je sauvegarde la grille de données, une fois mise à jour, dans le fichier xml. La case à cocher, lorsque vous cliquez dessus, enregistre dans le fichier XML. Je le sais car lorsque je recharge l'application, le résultat est correct. Cependant, quand je viens d'actualiser le fournisseur de données sans fermer l'application flexible, les cases à cocher revenir à ce qu'ils étaient avant le changement.Comment recharger la case à cocher dans itemrenderer

Voici donc la case à cocher personnalisée:

<?xml version="1.0" encoding="utf-8"?> 
<mx:CheckBox xmlns:mx="http://www.adobe.com/2006/mxml" > 
<mx:Script> 
    <![CDATA[ 
    override public function set data(value:Object):void{ 
    super.data = value; 

    trace("data = " + [email protected]); 
    if([email protected] == "true") 
    { 
    this.selected = true; 

    }else 
    { 
    this.selected = false; 
    } 
    } 
    ]]> 
</mx:Script> 
</mx:CheckBox> 

Et voici où je l'appelle:

<mx:DataGridColumn width="75" headerText="hide?" dataField="@hidden"> 
    <mx:itemRenderer> 
    <mx:Component> 
     <local:itemRendCheckBox /> 
    </mx:Component> 
    </mx:itemRenderer> 
</mx:DataGridColumn> 

J'imagine ce qui se passe est que tout est mise à jour à l'exception du itemRenderer custome. Y at-il quelque chose que je peux faire pour indiquer la case à cocher pour actualiser avec le fournisseur de données?

+0

utilisez-vous [Bindable] sur votre variable dataProvider? Il pourrait également être utile de montrer un peu plus de code. – asawilliams

+0

En remarque, pourquoi les gens ressentent-ils le besoin d'utiliser si ce n'est PAS réellement nécessaire? –

+0

que recommanderiez-vous plutôt, j'ai encore beaucoup à apprendre. Je l'ai fait parce que mon autre moyen ne fonctionnait pas. – pfunc

Répondre

0

Je pense que je l'ai compris, j'appelais le DataGrid pour actualiser, ce qui est différent, puis actualiser le fournisseur de données réel. Donc, au lieu de myDataGrid.send(), j'ai appelé dataProv.dataprovider.refresh();