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

ActionScript 3 Discussion :

Calcul sur données saisies dans un datagrid


Sujet :

ActionScript 3

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Par défaut Calcul sur données saisies dans un datagrid
    Bonjour à tous et à toutes!
    Je débute sur Flex4 et n'ayant pas les bases, je ne parviens pas à mes fins.

    J'ai un datagrid (dg) rempli d'images (ItemRenderer).
    Sur clic d'une image, j'appelle les éléments issus d'une table Sqlite que j'insère dans un datagrid (dg1)
    Ces éléments sont dragables vers d'autres datagrid (dg2, dg3 et dg4) et l'utilisateur peut y ajouter des données;
    J'ai donc par exemple :
    Aliment Quantité
    Tomates 150
    Haricots 60

    Quelles propriétés ou méthodes du datagrid me permettront de récupérer ces lignes (à partir d'une fonction événementielle)? (selectedItem? GetChildByName?)

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    bonjour,

    tu peux utiliser les événements pour savoir quelle cellule a été cliquée par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <fx:Script>
    <![CDATA[
     
       import mx.events.ListEvent;
     
       protected function onItemClick(e:ListEvent):void
       {
           var rowIndex:Number = e.rowIndex;
           var columnIndex:Number = e.columnIndex;
       }
     
    ]]>
    </fx:Script>
     
    <mx:DataGrid id="dg" itemClick="onItemClick(event);">
       ...
    </mx:DataGrid>

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Par défaut
    Merci Madfrix. Je n'ai pas été assez précis.
    En fait j'aimerai récupérer mes tomates et leur quantité ainsi que les haricots et leur quantité : toutes les lignes et colonnes des datagrid dg2, 3 et 4.

    L'événement est de type change et appliqué sur un container TabNavigator.
    Les lignes sont reportées dans un autre onglet (Resultat), dans un datagrid (dgReport).

    Le dataprovider dp1 du datagrid dg1 à partir duquel on "drag" est défini comme "Bindable".
    Mais les datagrid cibles (dg2, 3 et 4), n'ont pas de dataprovider donc pas de liaison de données Bindable.

    Comment donc mettre les données de dg2,dg3,dg4 dans dgRestit situé dans un autre onglet?

    Ce n'est pas clair dans ma tête alors c'est difficile de l'être auprès de vous!

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    J'avoue que c'est pas forcément clair c'est vrai.

    En fait pour faire simple, tu as un dg situé dans un onglet et tu souhaites sélectionner des ligne de celui pour les envoyer dans d'autres dg situés dans un autre onglet c'est ca ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Par défaut
    yes c'est ça!
    Enfin parcourir (je suppose) toutes les lignes des dg et les insérer dans le dg principal.
    (en réalité dans les dg il y a la composition (glucides...) de la tomate qui n'est pas affichée et que j'afficherai dans le dg principal)

  6. #6
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    et comment tu souhaites faire pour envoyer les lignes du dg1 vers les autres dg ?

    Via une sélection des lignes puis un clic sur un bouton ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Par défaut
    Mince c'est le contraire, ce sont 3dg (dg2,3 et 4) qui alimenteraient dg1.

    L'utilisateur fait un drag & drop de : tomate dans dg2
    Il indique la quantité (toujours dans dg2)

    L'utilisateur change d'onglet : il va vers Resultats.
    Je parcoure les lignes de chaque dg et les insère dans dg1.

    la fonction se nomme restitution et est de type change appliquée au TabNavigator.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <mx:TabNavigator change="restitution()"  >
    	<s:NavigatorContent id="NC1" label="Alimentation" >
                <mx:DataGrid id="dg2" dropEnabled="true"> </mx:DataGrid>
                      <mx:columns>
    			<mx:DataGridColumn headerText="Aliment"  editable="false" dataField="lbl_ali"/>
    			<mx:DataGridColumn headerText="Quantité" editable="true" dataField="qte" />
    		   </mx:columns>
                <mx:DataGrid id="dg3" dropEnabled="true"> </mx:DataGrid>
                <mx:DataGrid id="dg4" dropEnabled="true"> </mx:DataGrid>
            </s:NavigatorContent>
            <s:NavigatorContent  id="NC2" label="Résultat" >
                 <mx:DataGrid id="dg1" </mx:DataGrid>
            </s:NavigatorContent>
     </mx:TabNavigator>

  8. #8
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Ok, je vois à peu près ^^

    ou bloques tu actuellement alors ?

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Par défaut
    Eh bien c'est la fonction restitution entière qui me pose problème
    Initialement, je m'étais dis qu'il faudrait faire une boucle de type :
    Pour chaque "enfant de type datagrid" du "navigatorContent NC1" faire:
    Récupère chaque ligne,
    Insère dans NC2.dg2
    Fin de la boucle

    Mais je bloque sur la récupération des lignes de dg2... Je ne connais que la méthode selectedItem.

    Puis: pourquoi ne pas utiliser Bindable appliqué à dg1 et provenant des dg2, 3 et 4. Problème : 2,3 et 4 n'ont pas de dataprovider et la lecture des tenants et aboutissants de la propriété Bindable ne m'aide pas

    Oui oui, je sais, j'en suis pas bien loin (du début !)

  10. #10
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Tu as aussi selectedItems qui te renvoi un tableau de données mais encore faut il qu'elles soient sélectionnées et que allowMultipleSelection vaille true sur ton dg.

    Sinon, pourquoi ne pas récupérer toutes les données de ton datagrid en récupérant son dataProvider ?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Par défaut
    ça marche!
    dg2 a pour dataProvider dp2 et dg : dpTOT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private function restitution():void
    {
    	dpTOT = dp2;
    }
    Merci beaucoup!

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Par défaut
    En revanche lorsque je veux cumuler les dataProvider, ça ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private function restitution():void
    {
    	dpTOT = dp2 + dp3;
    }
    Ce n'est pas étonnant.
    Je regarde comment cumuler des dataprovider qui ne sont en fait que des arrayCollection...

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private function restitution():void
    {
    	dpTOT.addAll(dp2);
    	dpTOT.addAll(dp3);
    }
    Voila qui est mieux. Par contre ce n'est pas une belle façon de coder non?

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

Discussions similaires

  1. comment enregistrer des données saisies dans un datagrid
    Par informatos dans le forum VB.NET
    Réponses: 2
    Dernier message: 15/01/2011, 20h47
  2. Réponses: 1
    Dernier message: 02/05/2010, 10h26
  3. [c#] Saisie dans un dataGrid
    Par abder_razak dans le forum Windows Forms
    Réponses: 1
    Dernier message: 17/07/2006, 17h21
  4. récupérer des données saisies dans un fichier
    Par natie_49 dans le forum C++
    Réponses: 6
    Dernier message: 24/11/2005, 11h29
  5. Réponses: 8
    Dernier message: 19/05/2005, 16h03

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