Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/09/2011, 09h19   #1
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 131
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 131
Points : 37
Points : 37
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?)
granchef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 10h01   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 279
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 279
Points : 2 325
Points : 2 325
bonjour,

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

Code :
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>
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 10h46   #3
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 131
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 131
Points : 37
Points : 37
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!
granchef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 10h53   #4
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 279
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 279
Points : 2 325
Points : 2 325
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 ?
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 10h56   #5
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 131
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 131
Points : 37
Points : 37
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)
granchef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 11h00   #6
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 279
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 279
Points : 2 325
Points : 2 325
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 ?
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 11h18   #7
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 131
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 131
Points : 37
Points : 37
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 :
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>
granchef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 11h28   #8
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 279
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 279
Points : 2 325
Points : 2 325
Ok, je vois à peu près ^^

ou bloques tu actuellement alors ?
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 11h37   #9
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 131
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 131
Points : 37
Points : 37
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 !)
granchef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 11h42   #10
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 279
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 279
Points : 2 325
Points : 2 325
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 ?
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 11h57   #11
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 131
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 131
Points : 37
Points : 37
ça marche!
dg2 a pour dataProvider dp2 et dg : dpTOT.
Code :
1
2
3
4
private function restitution():void
{
	dpTOT = dp2;
}
Merci beaucoup!
granchef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 12h06   #12
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 131
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 131
Points : 37
Points : 37
En revanche lorsque je veux cumuler les dataProvider, ça ne fonctionne pas :
Code :
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...
granchef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 12h51   #13
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 131
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 131
Points : 37
Points : 37
Code :
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?
granchef est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h12.


 
 
 
 
Partenaires

Hébergement Web