Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
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 28/12/2010, 14h40   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
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
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 14h47   #2
Membre confirmé
 
Avatar de samy2525
 
Inscription : janvier 2008
Messages : 249
Détails du profil
Informations personnelles :
Localisation : France, Hauts de Seine (Île de France)

Informations forums :
Inscription : janvier 2008
Messages : 249
Points : 266
Points : 266
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)
samy2525 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 16h06   #3
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 566
Points : 3 566
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 !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 16h15   #4
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
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
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 21h41   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
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?
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 00h48   #6
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 566
Points : 3 566
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 !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 10h31   #7
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Si tu fais un

Code sql :
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 ?
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 12h06   #8
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
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
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 13h58   #9
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
tu le dis toi même, tu récupères tout de ta table avec un

Code sql :
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 :
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...
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 14h20   #10
Membre confirmé
 
Avatar de samy2525
 
Inscription : janvier 2008
Messages : 249
Détails du profil
Informations personnelles :
Localisation : France, Hauts de Seine (Île de France)

Informations forums :
Inscription : janvier 2008
Messages : 249
Points : 266
Points : 266
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)
samy2525 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 14h26   #11
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 566
Points : 3 566
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 :
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 !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 14h29   #12
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
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
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 14h39   #13
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 566
Points : 3 566
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 !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 14h46   #14
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
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
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 15h07   #15
Membre confirmé
 
Avatar de samy2525
 
Inscription : janvier 2008
Messages : 249
Détails du profil
Informations personnelles :
Localisation : France, Hauts de Seine (Île de France)

Informations forums :
Inscription : janvier 2008
Messages : 249
Points : 266
Points : 266
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)
samy2525 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 16h05   #16
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
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.
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 15h12   #17
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
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
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 15h42   #18
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
il faut que tu mettes dans la propriété dataField de ta DataGridColumn, le champ correspondant à ta requête SQL retournée. Ex :

Code :
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
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 16h27   #19
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
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 :
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
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 17h43   #20
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
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 ?
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h42.


 
 
 
 
Partenaires

Hébergement Web