Forums Développement Multimédia

Aller au contenu

[Résolu] Synchro entre DATAGRID et base de données en HTTPService

Flex CODE Actionscript

1 réponse à ce sujet

#1 stephane.vw

    Ceinture Blanche

  • Members
  • Pip
  • 2 messages

Posté 11 April 2012 - 21:02 PM

Bonjour,

Je commence en FLEX et j'ai un petit soucis.
Voila je n'arrive pas à synchroniser mon DATAGRID lors de modification effectuées dans ma base de données, mon DATAGRID se "peuple" bien lors du lancement de l'appli et ceci avec ADOBE "Flash BUILDER 4.6" et "Adobe Flex Builder 3"

J'aimerais par exemple que mon DATAGRID se mettre à jours automatiquement :
- lorsqu'il y a une modification effectuée (MAJ d enregistrement, ajout, supression)par une appli tierce.
- se mettre à jour toute les 10 secondes (exemple).
- lorsque je reviens sur le "BorderContainer" ou "Canvas" qui est dans un "ViewStack"

J'ai tester le services.send() avec un dataProvider.removeAll() mais cela me remet exactement les mêmes valeurs sans prendre en compte les modifications.

Quelqu'un pourrait il m'aider la dessus, mon projet ne peut avancer si je ne peux faire cette action.

le code :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"  creationComplete="initApp()">
<mx:Script>
  <![CDATA[
   import mx.collections.ArrayCollection;
   import mx.controls.Alert;
   import mx.rpc.events.FaultEvent;
   import mx.rpc.events.ResultEvent;
 
   private function initApp():void
   {
        srv_liste_users.send();
 
   }
 
   [Bindable]private var liste_user:ArrayCollection;
 
   private function resultHandler(event:ResultEvent):void
   {
        liste_user = event.result.users.user;
   }
 
   private function faultHandler(event:FaultEvent):void
   {
        Alert.show(event.fault.faultDetail, "Error");
   }
 
 
 
   private function changeEvt(event:Event):void {
        var select_item_menu:String =event.currentTarget.selectedItem.@data;
        if( select_item_menu=="USERS_LIST"){MAIN.selectedChild=DIV_LIST_USERS;}
        if( select_item_menu=="USERS_LIST_ARCHIV"){MAIN.selectedChild=DIV_ARCHIVE_LIST_USERS;}
   }
  ]]>
</mx:Script>
<mx:HTTPService id="srv_liste_users" url="http://localhost/sp4/liste.user.php"
                result="resultHandler(event)"
                fault="faultHandler(event)">
 
 
  </mx:HTTPService><mx:Panel x="0" y="0" width="100%" height="100%" layout="absolute">
  <mx:HDividedBox width="100%" height="100%">
  <mx:VBox width="200" height="100%">

 
        <mx:Canvas width="100%" height="100" borderStyle="solid">
       
        </mx:Canvas>
        <mx:Accordion x="10" y="319" width="100%" height="100%">
          <mx:Canvas label="@-Users" width="100%" height="100%">
                <mx:Tree id="myTree" width="100%" height="100%" labelField="@label"
                                showRoot="false" borderStyle="none" change="changeEvt(event);">
                         <mx:XMLList id="treeData">
                                 <node label="Liste" width="100%" data="USERS_LIST"></node>
                                 <node label="Archive"  data="USERS_LIST_ARCHIV"></node>
                                 <node label="Exportation"></node>       
                         </mx:XMLList>
          </mx:Tree>
       
          </mx:Canvas>
         </mx:Accordion>
   </mx:VBox>
   <mx:ViewStack id="MAIN" width="100%" height="100%" borderColor="#B7BABC" borderStyle="solid">
        <mx:Canvas id="DIV_LIST_USERS" width="100%" height="100%">
         <mx:Label  text=" Liste des utilisateurs" width="100%" fontWeight="bold" height="25" textAlign="left" fontSize="20">
       
         </mx:Label>
         <mx:HRule x="0" y="33" width="100%" strokeWidth="1" strokeColor="#B7BABC"/>
         <mx:HRule x="0" y="61" width="100%" strokeWidth="1" strokeColor="#B7BABC"/>
         <mx:Button  x="10" y="36" icon="@Embed(source='images/user_add.png')" width="20" toolTip="Cliquer pour ajouter un nouvel utilisateur" click="{MAIN.selectedChild=DIV_NOUV_USERS}"/>
         <mx:Button x="34" y="36" icon="@Embed(source='images/page_refresh.png')" width="20" toolTip="Cliquer pour rafraichir la page"/>
         <mx:DataGrid id="GRID_LIST_USERS" x="1" y="68" width="100%" dataProvider="{liste_user}" resizableColumns="true" enabled="true" rowCount="10">
          <mx:columns>
           <mx:DataGridColumn dataField="USER_ID"
        headerText="ID"></mx:DataGridColumn>
                        <mx:DataGridColumn dataField="USER_NOM"
        headerText="NOM"></mx:DataGridColumn>
                        <mx:DataGridColumn dataField="USER_PRENOM"
        headerText="PRENOM"></mx:DataGridColumn>
                        <mx:DataGridColumn dataField="USER_PAYS"
         headerText="PAYS"></mx:DataGridColumn> <mx:DataGridColumn dataField="USER_SITE"         headerText="SITE"></mx:DataGridColumn> <mx:DataGridColumn dataField="USER_EQUIPE"       headerText="EQUIPE"></mx:DataGridColumn>
                        <mx:DataGridColumn dataField="USER_STATUT"
                                 headerText="STATUT"></mx:DataGridColumn>
        </mx:columns>
         </mx:DataGrid>
         <mx:TextInput x="85" y="36" width="250" toolTip="Reherche"/>
         <mx:Image x="65" y="36" width="20" height="22" source="images/magnifier.png"/>
 
   </mx:Canvas>
        <mx:Canvas id="DIV_ARCHIVE_LIST_USERS" width="100%" height="100%">
         <mx:Label  text=" Archive Liste des utilisateurs" width="100%" fontWeight="bold" height="25" textAlign="left" fontSize="20">   </mx:Label>
         <mx:HRule x="0" y="33" width="100%" strokeWidth="1" strokeColor="#B7BABC"/>
         <mx:HRule x="0" y="61" width="100%" strokeWidth="1" strokeColor="#B7BABC"/>
         <mx:DataGrid x="10" y="66">
          <mx:columns>
           <mx:DataGridColumn headerText="Column 1" dataField="col1"/>
           <mx:DataGridColumn headerText="Column 2" dataField="col2"/>
           <mx:DataGridColumn headerText="Column 3" dataField="col3"/>
          </mx:columns>
         </mx:DataGrid>
         <mx:TextInput x="31" y="36" width="250" toolTip="Reherche"/>
         <mx:Image x="10" y="36" width="20" height="22" source="images/magnifier.png"/>
   </mx:Canvas>
        <mx:Canvas id="DIV_NOUV_USERS" width="100%" height="100%">
          <mx:Label  text=" Nouvel utilisateur" width="100%" fontWeight="bold" height="25" textAlign="left" fontSize="20">      </mx:Label>
         <mx:HRule x="0" y="33" width="100%" strokeWidth="1" strokeColor="#B7BABC"/>
         <mx:HRule x="0" y="61" width="100%" strokeWidth="1" strokeColor="#B7BABC"/>
         <mx:Button  x="10" y="36" icon="@Embed(source='images/user_add.png')" width="20" toolTip="Cliquer pour retourner à la liste" click="{MAIN.selectedChild=DIV_LIST_USERS}"/>
        </mx:Canvas>
   </mx:ViewStack>  
   </mx:HDividedBox>
</mx:Panel>

</mx:Application>
 


Merci par avance

#2 stephane.vw

    Ceinture Blanche

  • Members
  • Pip
  • 2 messages

Posté 13 April 2012 - 13:28 PM

Problème résolu tout seul !! :-)
Cela peut intéresser des personnes ayant le même problème.
Le souci venait d'un "Bug" PHP, qui garde par défaut les données en cache, pour résoudre se "Bug", il suffit d'ajouter dans le script PHP qui est appelé en HTTPService :
En début de script :


< ?php session_start();
header("Cache-control: private");
?>
 




1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP