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 :

Rafraichir datagrid apres MAL bdd


Sujet :

Flex

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    Par défaut Rafraichir datagrid apres MAL bdd
    Salut,

    Voilà mon problème que j'avoue avoir du mal à comprendre. Dans mon application j'ai un datagrid qui est relié à une base de données jusque là nickel, mais j'ai un bouton supprimer qui me permet de supprimer une donnée que je sélectionne dans mon datagrid, la suppression se passe bien, mais je voudrais qu'après ma suppression mon datagrid se rafraichisse pour ne plus afficher le champ que j'ai supprimé. J'ai fait pas mal de recherche et j'ai rien trouvé j'ai essayé:

    datagrid.dataprovider.refresh();

    Mais sans succès

  2. #2
    Membre averti Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Points : 310
    Points
    310
    Par défaut
    Bonjour, la suppression se fait dans la BDD ou juste au front si c'est dans la BDD inspecte le retour de ton service de suppression et si c'est ok relance ton service qui remplis ton DG la première fois et normalement tu n'auras plus de problème

    Bon courage

    Samy
    http://www.m-ataf.com (En cours de construction)

  3. #3
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Je sais pas si c'est possible, mais supprimer la ligne sélectionné sur le datagrid après confirmation venant du serveur. Ainsi, tu réduis le taille des données transférées.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  4. #4
    Membre émérite 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
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par berceker united Voir le message
    Je sais pas si c'est possible, mais supprimer la ligne sélectionné sur le datagrid après confirmation venant du serveur. Ainsi, tu réduis le taille des données transférées.
    Yep c'est possible

    Par contre mettre la référence de la ligne (id_datagrid.selectedItem...) au moment du clic vers le service pour éviter qu'un changement de ligne par l'utilisateur avant le retour du service ne supprime la mauvaise occurrence de ligne

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    Merci tout le monde de votre aide j'ai résolu mon problème a tourne nickel. Par contre j'ai une autre question qui je pense est plus complexe. J'ai un datagrid liée à une base de donnée par exemple ma table à 4 champs. Mais si j'ajoute a ma table 1 champ par exemple depuis phpmyadmin, est-il possible que mon datagrid rajoute automatiquement ce nouveau champ?

  6. #6
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Citation Envoyé par xclue Voir le message
    Merci tout le monde de votre aide j'ai résolu mon problème a tourne nickel. Par contre j'ai une autre question qui je pense est plus complexe. J'ai un datagrid liée à une base de donnée par exemple ma table à 4 champs. Mais si j'ajoute a ma table 1 champ par exemple depuis phpmyadmin, est-il possible que mon datagrid rajoute automatiquement ce nouveau champ?
    Il me semble justement que j'ai vu un poste parlant de ça. Il est pas très loin à coté du tien il me semble. Il pose justement cette question.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  7. #7
    Membre émérite 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
    Points : 2 566
    Points
    2 566
    Par défaut
    Si tu fais un

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM table;

    depuis ton service, tu vas construire un datagrid à l'image de ta table, je comprends pas trop ton problème ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    je me suis peut être mal expliqué.
    Enfaite j'ai créer une bdd de donne sur php my admin dans celle ci j'ai fait une table. Cette table contient 4 champs un champ id, nom, prénom et mail. Dans mon application j'ai un datagrid qui affiche toutes les donné de ma table avec la requête SELECT * from table.
    Jusque la tout marche bien. Mais par exemple si je vais sur php my admin et que je rajoute à ma table un champ note par exemple, est ce que mon datagrid va détecter automatiquement ce nouveau champ et rajouter la colonne note au datagrid automatiquement?J'espère avoir été plus clair.

    Merci

  9. #9
    Membre émérite 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
    Points : 2 566
    Points
    2 566
    Par défaut
    tu le dis toi même, tu récupères tout de ta table avec un

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM taTable;

    Donc que tu ai 2 champs ramené ou 10 c'est exactement la même chose, ton datagrid les affichera tous. Après, tu peux modifier les paramètres des colonnes du datagrid avec la propriété columns du datagrid qui prendra en paramètre un tableau d'objet de DataGridColumn

    Ex :

    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
     
    var colonnes:Array = new Array();
    var colonne:DataGridColumn;
     
    colonne = new DataGridColumn();
    colonne.headerText = "nom du champ1";
    colonne.setStyle("textAlign", "center");
    colonne.dataField = "champ1";
    colonne.width = 90;
    colonne.editable = false;
    colonnes.push(colonne);
     
    colonne = new DataGridColumn();
    colonne.headerText = "nom du champ2";
    colonne.setStyle("textAlign", "center");
    colonne.dataField = "champ2";
    colonne.width = 120;
    colonnes.push(colonne);
     
    dataGrid_id.columns = colonnes;
    Bref, tu peux tout paramétrer, exclure des champs retournés par ton services, les modifier etc...

  10. #10
    Membre averti Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Points : 310
    Points
    310
    Par défaut
    Bonjour, En fait, je pense qu'il veut qu'en ajoutant un enregistrement dans la BDD manuellement, que ça ce repercute automatiquement sur le FRONT, si c'est vraiment ça non, il te faut un processus coté FRONT qui envoie des requetes chaque 5 à 10 minutes et là c'est sur que tu verra ton enregistrement apparaitre

    Bon courage

    Samy
    http://www.m-ataf.com (En cours de construction)

  11. #11
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Non c'est bien l'ajout d'un champs dans la base de données qu'il parle. Est ce que dans la datagrid générée il va prendre en compte cette nouvelle structure.
    Madfrix a bien compris la demande par contre son exemple n'est peut être pas adapté parce que là il présente un script non dynamique. Du moins il faudrait un script un poil plus dynamique. En gros
    Désolé je connais pas la syntaxe exacte mais c'est ainsi que je verrais les choses.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    while sur la liste des chamsp retourné
    colonne = new DataGridColumn();
    colonne.headerText = "nom du champ1";
    colonne.setStyle("textAlign", "center");
    colonne.dataField = "champ1";
    colonne.width = 90;
    colonne.editable = false;
    colonnes.push(colonne);
    colonnes.push(colonne);
    End while
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  12. #12
    Membre émérite 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
    Points : 2 566
    Points
    2 566
    Par défaut
    A ca non effectivement c'est pas possible

    Il faudrait lier un trigger par exemple à un serveur de sockets mais c'est pas faisable surtout avec MySQL. Le seul truc que tu peux faire en restant avec les sockets, c'est faire un count de ta table à intervalle régulier et balancer une info à l'appli si ce count change lui disant de recharger le datagrid mais c'est lourd...

    EDIT: @Berceker : si j'avais bien compris cela, le fait est que le datagrid est lié à un dataprovider (arrayCollection). Pour chaque entrée de l'arrayCollection, le datagrid va ajouter une colonne automatiquement donc aucun boulot à faire. Mon code lui donne juste des pistes de modification par exemple pour un champ en base nommé prix_produit on souhaitera probablement un headerText (entete) de type "Prix du produit" ce qui implique un peu de modif manuelle

  13. #13
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    A ca non effectivement c'est pas possible

    Il faudrait lier un trigger par exemple à un serveur de sockets mais c'est pas faisable surtout avec MySQL. Le seul truc que tu peux faire en restant avec les sockets, c'est faire un count de ta table à intervalle régulier et balancer une info à l'appli si ce count change lui disant de recharger le datagrid mais c'est lourd...

    EDIT: @Berceker : si j'avais bien compris cela, le fait est que le datagrid est lié à un dataprovider (arrayCollection). Pour chaque entrée de l'arrayCollection, le datagrid va ajouter une colonne automatiquement donc aucun boulot à faire. Mon code lui donne juste des pistes de modification par exemple pour un champ en base nommé prix_produit on souhaitera probablement un headerText (entete) de type "Prix du produit" ce qui implique un peu de modif manuelle
    Donc si je comprend bien ne serait-ce que via le dataprovider du datagrid alimenté via un arraycollection il gère automatiquement. C'est cool ça j'aurais justement besoin de faire cela dans pas longtemps
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  14. #14
    Membre émérite 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
    Points : 2 566
    Points
    2 566
    Par défaut
    Oui, c'est ca l'avantage de l'arrayCollection et du binding, un ajout/suppression dans l'arrayCollection met à jour le composant qui est lié à l'arrayCollection

    Binder une variable est cependant plus long en terme de traitement que de ne pas la binder, donc binder un minimum possible de variables

  15. #15
    Membre averti Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Points : 310
    Points
    310
    Par défaut
    désolé, je n'ai pas bien saisi la problématique, je pense que tu as raison, avec l'arrayCollection.
    http://www.m-ataf.com (En cours de construction)

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    Merci à vous tous pour vos réponse je vais creuser dans les directions que vous m'avais donnés, je vous tiendrez au courant de l'avancement du projet.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    Salut à tous,

    voila j'arrive à rajouter une colonne dynamiquement à mon datagrid pas de souci, mais le problème que j'ai maintenant c'est que dans cette colonne aucun donnés s'affiche pourtant dans ma base de donné le champ que je rajoute a mon datagrid contient bien des données.
    La requête que je fait pour mon datagrid est pourtant un SELECT * from table.
    Comment sa se fait? mon datagrid ne fait pas la liaison entre la colonne que je rajoute qui porte le nom test et le champ test de la base de donnée?

    Merci

  18. #18
    Membre émérite 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
    Points : 2 566
    Points
    2 566
    Par défaut
    il faut que tu mettes dans la propriété dataField de ta DataGridColumn, le champ correspondant à ta requête SQL retournée. Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var colonne:DataGridColumn;
    colonne = new DataGridColumn();
    colonne.dataField = "prenom";
    où prenom est récupéré via un SELECT * FROM taTable ou un SELECT prenom FROM taTable par exemple

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    Alors là il y a quelque chose que je ne comprend pas . J'ai bien fait comme tu m'a dit j'ai rajouté le datafield mais toujours rien. Ce qui est bisare c'est que mon datagrid à la base affiche 4 colonnes. J'ai un bouton qui me permet de rajouter une colonne au datagrid pas de souci elle se rajoute correctement mais lorsque je met le datafield égale à test qui est le nom du champ de ma table aucun résultat s'affiche.
    Par contre si a la place de test dans mon datafield je met un des 4 quatre champs déjà affiché par mon datagrid sa fonctionne.
    Voila le code du bouton qui me rajoute ma colonne le souci ce trouve peut-être ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	var test:String="rajout";  
    	var dgc:DataGridColumn = new DataGridColumn(test);
    	var cols:Array = dataGrid.columns;
    	dgc.dataField="test";
    	cols.push(dgc);
    	dataGrid.columns = cols;
    Et encore merci de votre aide les gars

  20. #20
    Membre émérite 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
    Points : 2 566
    Points
    2 566
    Par défaut
    Je pige pas !

    2 choses : soit tu ramènes le champ test via un service et la dataGrid contient cette colonne naturellement, soit tu ne ramènes pas le champ test de ton service et ton dataField ne peut donc pas trouver ce champ dans ton dataProvider à moins qu'explicitement tu construises un objet test dans ton dataProvider.

    Comment est il construit ton dataProvider alimentant ta dataGrid ?

Discussions similaires

  1. Rafraichir un Datagrid après MAJ de la BD
    Par b_zakaria dans le forum Flex
    Réponses: 9
    Dernier message: 25/03/2009, 15h44
  2. Réponses: 3
    Dernier message: 22/06/2006, 23h23
  3. ORA-01190 Problème après Activation BDD Standby
    Par Sergio_free dans le forum Oracle
    Réponses: 2
    Dernier message: 23/10/2005, 00h38
  4. [VB.NET] Recuperer numero ligne dans DATAGRID apres event
    Par stephane93fr dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/01/2005, 11h58
  5. Rafraichir dbgrid apres insertion d'une donnée ds une table
    Par gizmorambo dans le forum Bases de données
    Réponses: 7
    Dernier message: 11/01/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