IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Une combobox dans une datagrid, problème de dataprovider


Sujet :

Flex

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Points : 118
    Points
    118
    Par défaut Une combobox dans une datagrid, problème de dataprovider
    Bonjour,

    J'aimerais avoir une combobox dans une datagrid.
    J'ai donc une datagrid qui a son propre dataprovider et qui affiche correctement les données. J'aimerais que cette datagrid soit éditable et que un champ puisse être édité par une liste de valeur mise dans une combobox.
    Cette combobox doit avoir son propre dataprovider.
    Mais Flex me marque le message suivant : 1120 : Access of undefined property resultMetierArrayCollection.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <mx:DataGrid x="10" y="10" width="964" height="344" id="tachesGrid" dataProvider="{resultTachesArrayCollection}" editable="true">
    <mx:columns>
    <mx:DataGridColumn headerText="Id" dataField="Id"/>
    <mx:DataGridColumn headerText="IdMetier" dataField="IdMetier" editable="true" editorDataField="value">
    <mx:itemEditor>
    <mx:Component>
    <mx:ComboBox editable="true" labelField="Value" dataProvider="{resultMetiersArrayCollection}">
    </mx:ComboBox>
    </mx:Component>
    </mx:itemEditor>
    </mx:DataGridColumn>
    </mx:columns>
    </mx:DataGrid>
    Je crois comprendre que le problème vient du fait que le combobox ne peut accéder qu'au données du datagrid. Mon 'resultMetiersArrayCollection' serait hors scope.
    Y a t-il moyen de contourner le problème ?

    Merci de votre aide

  2. #2
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    Salut,

    pour alimenter ta Combobox tu dois préparer tes données dans le dataprovider de la dataGrid, finalement le dataprovider de tes combobox sont dans le dataprovider de ta datagrid.

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Points : 118
    Points
    118
    Par défaut
    merci pour ta réponse.

    Tu n'aurais pas un exemple ?
    J'y avais pensé, mais j'ai un peu de mal avec les dataprovider.

    Tu utilises quel type de collection pour stocker l'ensemble des données (grille + combobox)? Un ArrayCollection ?

    Par exemple, j'aurais 3 ArrayCollection (global pour y mettre tout, taches pour y mettre ce qui doit être affiché dans la grille et metiers ce qui doit être affiché dans la combobox)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public var globalCollection:ArrayCollection = new ArrayCollection;
    public var tachesCollection:ArrayCollection = new ArrayCollection;
    public var metiersCollection:ArrayCollection = new ArrayCollection;
    je pourrais faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    globalCollection.setItemAt(tachesCollection, 0);
    globalCollection.setItemAt(metiersCollection, 1);
    je pourrais contruire ma datagrid comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <mx:DataGrid id="tachesGrid" dataProvider="{globalCollection}" editable="true">
    Mais après, que mettre dans le datafield du DataGridColumn pour qu'il prenne l'Id qui se trouve dans le tachesCollection ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <mx:columns>
    <mx:DataGridColumn headerText="Id" dataField="??Id??"/>
    et que mettre dans le dataprovider de la combobox ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <mx:ComboBox editable="true" labelField="Value" dataProvider="{??}">
    désolé pour toutes ce squestions mais je suis un peu nouveau dans flex et j'ai du mal avec les dataprovider

    merci

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Donc la combo box est un élément de l'éditable de ta datagrid.
    Il te met une erreur de compilation en fait car lorsque tu es dans ton item editor tu peux te considérer comme étant dans un composant différent. Tu ne peux donc pas accéder à ton arraycollection.
    Ce que je te conseille :
    - crée ta combo box à part qui te servira d'item editor
    - récupère la liste avec laquelle tu devras alimenter ta combo box et met la dans un singleton auquel tu auras accès partout (il correspond au modèle si tu appliques le modèle MVC.

    Ainsi tu pourras récupérer ton objet de partout et alimenter comme il faut des différentes combo box.

    Bonne chance.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Points : 118
    Points
    118
    Par défaut
    merci beaucoup,

    cela fonctionne bien maintenant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire une recherche dans une combobox et une sélection automatique
    Par VictoriusDan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/12/2009, 16h17
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo