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

Flash Discussion :

[FLASH MX] data radio dans un fichier.as


Sujet :

Flash

  1. #1
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut [FLASH MX] data radio dans un fichier.as
    Salut @ tous,

    J'injecte dans mon datagrid, des radio (oui/non) pour chaque ligne, via une classe (radioRend.as).

    je voudrai faire correspondre aux data de mes radio la valeur contenue dans la colonne "num contrat" du datagrid
    ex:
    Oui_Ct2005100 Non_Ct2005100
    Oui_Ct2005101 Non_Ct2005102

    Cette valeur num contrat est issue da la lecture d'un fichier.xml, faut-il faire lire aussi à la classe ce fichier xml, ou puis-je envoyer depuis le dataSet du fichier.fla les valeurs au radio de la classe
    :
    MERCI DE VOTRE AIDE

  2. #2
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Hello
    Tu as essayé de faire quelquechose ? sur le site de philflash tu as rien trouvé à ce sujet ?
    Sinon envoi un petit zip contenant un test de ce que tu cherches à faire avec ta classe de CellRederer... pour qu'on puisse toucher au code et t'aider.. sinon pour ma part j'ai pas le temps de te faire tout un tuto là dessus
    EKA+

  3. #3
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    Salut EKA,

    Je n'arrive pas a récupére le data du radio, lorsque je passe par une fonction contenue dans le .fla

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    valid_Btn.onPress = function(){
    for(i=0; i< d_Grid.length; i++)
    		var transm = (d_Grid.getItemAt(i).TEST+" * "+ d_Grid.getItemAt(i).NOM +" * " + d_Grid.getItemAt(i).PRENOM)
    trace(transm);}
    la trace me renvoi bien le NOM et Le PRENOM, mais le test (data radio 1ou2ou3) est indefini.
    La fonction click contenu dans la classe, quand je l'active me renvoi bien les datas radio.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var g = radio._parent[groupName];
    g.addEventListener("click", this);
    ...
    function click(eventObj:Object):Void 
    	{
    	 var target = eventObj.target;
    	trace(eventObj.target.selection.data);
    }
    Comment puis-je récupérer ces valeurs via valid_Btn.onPress

  4. #4
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    commence par voir ce que te renvois le target de ton événement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var g = radio._parent[groupName];
    g.addEventListener("click", this);
    ...
    function click(eventObj:Object):Void  {
        var target = eventObj.target;
        trace ("target : " + target) ; 
    }
    ensuite faut voir comment tu as géré tout cela.. mais en principe faut que tu puisse changer la valeur de ton xml en temps réel .. ensuite le xml se trouve dans la propriété dataProvider de ton tableau. Envoi un petit exemple en fla de ce que tu fais pour voir comment je peux t'aider... sans cela je te le répète j'ai pas le temps de t'aider en te faisant un tuto là dessus Si tu envois quelquechose je te le corrigerai si je peux
    EKA+

  5. #5
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    t'as eu mon zip :

    L'idée de modifer le xml en fonction du select radio (cf philflash), est très interessante, mais j'ai du mal avec le listOwner

  6. #6
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    Le coeur du prob
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    listOwner.dataProvider.editField(getCellIndex().itemIndex, getDataLabel(), target.selection.data);
    Signification :
    Modifie la donnee du provider du datagrid par la nouvelle valeur du radio.
    a la position de la cellule dans la grille

    Mon prob est que dans mon .fla, le dataSet est le provider de mon dataGrid, et nulle part j'insere ma valeur initiale du radio...

  7. #7
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    ça marche nikel.....

    je n'utilises plus le dataSet mais dataProvider Directement , le click sur le radio modifi en temps réel le xml,
    reste plus à voir comment le sauvegarder

  8. #8
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Ah j'avais pas vu le mp... évite les mp la prochaine fois post directement dans le message de ta question, je vois plus rapidement ce qui s'y passe

    1 - essai de mieux code (niveau de la mise en forme de ton code.. je sais qu'on peut faire ce qu'on veut.. mais là il est difficile à lire ton code ) Donc n'hésite pas à utiliser les retours chariots dans ton code.

    2 - évite les noms de variables trop long.. dure à lire encore une fois un code avec des noms de variable trop long

    3 - pense à utiliser des var pour déclarer tes variables... mieux pour le code et surtout dans une fonction la variable est détruite à la fin de l'instruction automatiquement et cela libère de la mémoire

    4 - Quand tu parcours un tableau ou un childNodes (tableau contenant les sous noeud d'un noeud xml).. utilise une variable pour récupérer la valeur de la taille du tableau avant de le parcourir... cela fait gagner du temps dans le parcours de la boucle.. c'est une habitude à prendre !!

    5 - Petite correction sur ton code pour parcourir le xm et le reste dans le fla :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    import mx.controls.gridclasses.DataGridColumn;
     
    var style:Object = {
    	alternatingRowColors : [0xFFFFFF, 0xECF2F8] ,
    	fontSize : 12 ,
    	vGridLines : false
    }
     
    for (var prop:String in style) {
    	d_Grid.setStyle(prop, style[prop]) ;
    }
     
    var cellPress = function( event ) {
    	var target = event.target ;
    	var index = target.selectedIndex ;
    	var item = target.getItemAt(index) ;
    	var prenom = item.PRENOM ;
    	var accord = item.ACCORD ;
    	trace("Prenom : " + prenom + " >> accord : " + accord );
    }
     
    // la scène principale écoute l'événement cellPress
    d_Grid.addEventListener("cellPress", this) ;
    d_Grid.setHeaderHeight(35);
    d_Grid.rowCount = 4
     
    var c1:DataGridColumn = new DataGridColumn("NOM") ;
    c1.width = 100;
    d_Grid.addColumn(c1) ;
     
    var c2:DataGridColumn = new DataGridColumn("PRENOM") ;
    c2.width = 100;
    d_Grid.addColumn(c2) ;
     
    var c3 = new DataGridColumn("ACCORD");
    c3.width = 300;
    c3.cellRenderer = "RatingRadioRenderer";
    d_Grid.addColumn(c3);
     
     
    var x = new XML(); //création de l'objet XML
    x.ignoreWhite=true; //ignorer les sauts de ligne
    x.onLoad = function(success) { 
       	if (!success && this.status == 0) {
    		trace ("error !") ;
    		return ;
    	}
    	var data:Array = new Array();
    	var node:Array = this.firstChild.childNodes ;
    	var l:Number = node.length ;
        for (var i = 0; i < l ; i++) { 
    		var cur = node[i] ;
    		if (cur.nodeName == "remplacement") {
    			var subNode:Array = cur.childNodes ;
    			var item = {
    				ID : cur.attributes.id ,
    				NOM : subNode[0].firstChild.nodeValue ,
    				PRENOM : subNode[1].firstChild.nodeValue 
    			}
    			data.push(item);
    		}
    	}
    	d_Grid.dataProvider = data ; // injecter les données dans le modèle du tableau
    	d_Grid.sortItemsBy("PRENOM") ; // tu peux trier ton tableau directement
    }
    x.load("navetteMSA.xml");
     
    var click = function (ev) {
    	var target = d_Grid ;
    	var index = target.selectedIndex ;
    	var item = target.getItemAt(index) ;
    	var nom = item.NOM ;
    	var prenom = item.PRENOM ;
    	var accord = item.ACCORD ;
    	trace ( nom + " : " + prenom + " >> " + accord ) ;
    }
    valid_Btn.addEventListener("click", this) ;
    6 - Pour finir c'est dans la classe AS2 de ta cellule que tu dois aller... tu dois regarder ce qui se passe dans la méthode "click" en bas qui est invoquée quand tu choises un radioButton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	function click( ev ):Void {
    		var target = ev.target;
    		var id = target.selection.data ;
    		trace (id + " : " + this + " >> " + target) ;
    	}
    Il faut que là tu cherches avec les propriétés listOwner de l'api cellRenderer (voir la doc de flash à ce sujet... faut la lire !) et là tu pourras changer la valeur de la propriété ACCORD de ton objet dataProvider de ton tableau et donc récupérer cette valeur ensuite ou la mettre à jour sur le serveur etc..

    EKA+

  9. #9
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Bon tu as eu la réponse avant que je finisse de corriger ton code coté flash .. tout va alors

  10. #10
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    MERCI EKA pour ces corrections.

    et là tu pourras changer la valeur de la propriété ACCORD de ton objet dataProvider de ton tableau et donc récupérer cette valeur ensuite ou la mettre à jour sur le serveur etc..
    Maintenant j'en suis là , la valeur propriété ACCORD de l' objet dataProvider est modifiée, quel est selon toi la meilleur façon de la répercuter sur le fichier.xml, utiliser xml.send qui ciblerai une page.asp qui récrit le xml, via xpath par exemple, ou directement dans flash avec mon_xml.removeNode() puis mon_xml.createElement(nom)
    Merci de ton avis

  11. #11
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Le mieux c'est de faire une base de donnée MYSQL ou autre et d'utiliser Flashremoting (AMFPHP ou autre)... du coup tu utilises plus du tout de XML d'un coté comme de l'autre
    Et tu peux réduire à quelques lignes de code ta récupération des données coté serveur et pareil dans flash
    EKA+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/06/2015, 14h00
  2. Réponses: 3
    Dernier message: 29/05/2006, 17h04
  3. Réponses: 1
    Dernier message: 14/04/2006, 16h51
  4. [FLASH MX] selection.data Radio pour filter
    Par totoche dans le forum Flash
    Réponses: 9
    Dernier message: 09/12/2005, 10h17
  5. Réponses: 5
    Dernier message: 15/05/2005, 08h51

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