problème de remplissage d'une datagrid

problème de remplissage d'une datagrid - C#/.NET managed - Programmation

Marsh Posté le 04-05-2005 à 16:58:35    

Bonjour,
 
bon maintenant j'ai un problème beaucoup plus sérieux à priori simple.
Je souhaitais remplir un DataGrid avec un DataSet typé qui contenait l'ensemble des  
infos relatifs aux utilisateurs.
Et ce pour pouvoir remplir mon ComboBox.
Ensuite je souhaitais remplir la DataGrid avec l'évènement "cmbBox_SelectedIndexChanged".
Bon j'ai testé une première solution qui était de récupéré mon dataset typé avec toutes mes infos dedans
et de récupérer la row pour lequel l'utilisateur aurait cliqué dessus dans le combobox  
Cette row serait introduit dans un nouveau dataset.
Et ce dataset serait mis en datasource de la datagrid loll.
 
Mais cela ne fonctionne pas (un peu sioukss com sol :pt1cable: )
 
La deuxième sol serait de ne pas utiliser le dataset typé et donc de créer un dataset classique avec une requête qui récupérerai un row correspond à celle choisi dans le combobox.
 
Cette solution pose quelques problèmes  
 
enfin le problème qui se pose majoritairement est le pb de l'évènement "cmbBox_SelectedIndexChanged" car
pour pouvoir faire un requete sur le choix du l'utilisateur ds le combo ne se fai pa (cmb.selectedvalue)
j'ai essayé l'évènement "cmbBox_SelectionChangeCommitted" j'obtiens de meilleur résultat car je peux choisir ds le comboobx avant de lancer la méthode qui affichera les infos dans la datagrid.
 
bon je ferai pas plus long :pt1cable:  
merci de votre aide  
j'espere que vous comprendrez :pfff:  

Reply

Marsh Posté le 04-05-2005 à 16:58:35   

Reply

Marsh Posté le 06-05-2005 à 00:47:56    

sniff aucune réponse ou aide sur mon post
hepl les gars...

Reply

Marsh Posté le 06-05-2005 à 20:49:43    

Bon voila ce que je te conseille comme solution (testé il y a quelque temps dans une de mes applications)
 
tu fais une connexion avec la BD en mode déconnecté.  
tu fais une boucle qui parcours ce dataset et tu remplis ton combobox (un jeu d'enfant).
ensuite, suffit de traiter ton évènement, comme tu as le nom de l'utilisateur, il suffit de le récupérer dans une variable.  
Donc mtn tu as deux possibilités, si tu as mis dans ton premier dataset toutes les infos nécessaire, il suffit de rechercher dans le dataset, et d'associé au controle (je te conseille pas un datagrid personnellement pour ça :s)
si tu n'as pas toute les infos, tu refait une connexion (en mode déconnecté) à la base de donnée avec comme parametre ton nom d'utilisateur, en gros tu construits ta requete sql pour cet utilisateur la. et la de ton dataset t'en fait ce que tu veux

Reply

Marsh Posté le 09-05-2005 à 19:38:40    

ok mais pourquoi tu me déconseille une datagrid (de ce que je vous faire je voit pas d'autres alternative)?
secondo je réfléchi à ta proposition et on en reparlera...

Reply

Marsh Posté le 10-05-2005 à 08:22:07    

si j'ai bien compris, le résultat de ta sélection n'est qu'un tuple (pardonne moi si je me trompe). Dans ce cas la il n'est pas interessant de procéder avec un datagrid étant donné que celui-ci est vraiment convivial quand on a plusieurs lignes/tuples à afficher...
Dans un autre cas, si tu as bien qu'une ligne, la je te conseille de mettre des contrôles séparé et de les remplir en conséquence. Si tu as besoin d'encor un conseil n'hésite pas.

Reply

Marsh Posté le 13-05-2005 à 10:48:00    

euh as tu essayé dataview et filtre? Dans cette situation je crée une view et je pose des filtre pour la datagrid.
 
Pour ton probleme de "cmbBox_SelectedIndexChanged" as tu activé le autopostback du control? si non, active le ça marchera mieux  ;)


Message édité par cantonaifou le 13-05-2005 à 10:50:15
Reply

Marsh Posté le 26-05-2005 à 23:53:48    

Bonsoir,
après un long moment d'abscence je reviens me poser sur mon problème, dsl j'étais en exam.
Bon je pense être remonté à la racine du problème car même si mon combobox était rempli je pense que c'est lui qui pose un problème j'en suis quasiment sûre.
 
Voici la méthode qui permet le remplissage du comboBox:
(canto j'ai aussi testé avec un dataview aucune différence par rapport au dataset)

Code :
  1. UtilisateurDataset ds = Utilisateur.GetUtilisateur();
  2.         cmbBox.Items.Clear();
  3. DataView dv = new DataView(ds.utilisateur);
  4. dv.Table = ds.utilisateur;
  5. cmbBox.DataSource = dv;
  6. cmbBox.DisplayMember = dv.Table.Columns["login"].ColumnName;
  7. cmbBox.ValueMember = dv.Table.Columns["num"].ColumnName;


Donc voila, à ce moment l'appli plante mais remonte un message d'erreur de je ne sais où :??:  
 
"Le préfixe de colonne 'System.Data' ne correspond ni à un nom de table ni à un nom d'alias dans la requête"
 
merci d'avance de votre aide :jap:  

Reply

Marsh Posté le 27-05-2005 à 00:09:38    

tedhi-tech a écrit :

Voici la méthode qui permet le remplissage du comboBox:
(canto j'ai aussi testé avec un dataview aucune différence par rapport au dataset)

Code :
  1. UtilisateurDataset ds = Utilisateur.GetUtilisateur();
  2.         cmbBox.Items.Clear();
  3. DataView dv = new DataView(ds.utilisateur);
  4. dv.Table = ds.utilisateur;
  5. cmbBox.DataSource = dv;
  6. cmbBox.DisplayMember = dv.Table.Columns["login"].ColumnName;
  7. cmbBox.ValueMember = dv.Table.Columns["num"].ColumnName;



Vraiment chelou ce code :

  • Assignation de la datatable lors du constructeur du dataview, puis réassignation avec la même datatable [:johneh]  
  • Utilisation de formes compliquées : dv.Table.Columns["login"].ColumnName Pourquoi pas mettre "login" directement tout de suite ? Surtout que si le nom de colonne change, va falloir de toute manière rechanger la ligne

cmbBox.Items.Clear();
cmbBox.DataSource = new DataView(Utilisateur.GetUtilisateur().utilisateur);
cmbBox.DisplayMember = "login";
cmbBox.ValueMember = "num";

Reply

Marsh Posté le 27-05-2005 à 00:23:44    

mouai mais bon c'est de la syntaxe le problèm persiste...

Reply

Marsh Posté le 27-05-2005 à 00:26:03    

Pour l'erreur chelou, c'est à quel endroit qu'elle se produit ?

Reply

Marsh Posté le 27-05-2005 à 00:26:03   

Reply

Marsh Posté le 27-05-2005 à 00:27:55    

ma méthode affiche du combobox est lancé dans le constructeur du formulaire, il me balance l'erreur mais apres il me rempli quand meme le combobox...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed