babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 novembre 2015
-
21 sept. 2006 à 10:38
aogie
Messages postés108Date d'inscriptionvendredi 11 juillet 2003StatutMembreDernière intervention27 novembre 2007
-
25 sept. 2006 à 15:06
Bonjour,
Contexte : J'affiche une liste de client (ListBox) à partir d'un DataSet et je mémorise la primary Key de mes records "client" grâce à la propriété ValueMembre. Grâce à cela, lorsque je clique sur un client de la liste, je retourve facilement sont PK et peut donc afficher l'ensemble des info de ce client.
Ayant une base reationnelle, j'ai une relation entre ma table Client et ma table Ville. Cette table Ville est affichée dans une combo. Donc lorsqu'un client est sélectionné, j'aimerai affiché la bonne ville dans la combo. le problème est que je ne peux pas utiliser la propriété FindStringExact car dansle record client je n'ai que la PK Ville (soit un entier).
Voici ce que j'ai fait (mais qui ne me convient pas vraiment) :
Je récupère les données de la table Ville dans un DataSet puis j'assigne ce DataSet à une Combo grâce à la propriété dataSource. Afin de retrouver la primary Key de mes records j'ai affecté la propriété ValueMember. Ensuite, lorsque je sélectionne un client dans la liste, je selectionne tous mes items de la combo ville afin de retrouver mon PK. Cela fonctionne bien mais on voit la combo "travailler" alors qu'il n'y a pas beaucoup de données.
Voici le source
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// initCboVille
private void initCboVille()
{
//initialisation
Client client = new Client(); //Classe pour les clients
Erreur erreur = new Erreur(); // Gestion des erreur
DataSet ds = new DataSet(); // DataSet pour toutes les villes
//recherche de tous les clientActif
erreur = client.retAllVille(out ds);
if (erreur.enErreur)
{
MessageBox.Show(erreur.MsgUser + erreur.MsgInfo, ...);
return;
}
//Affichage de toutes les ville dans la combo
cboVille.DataSource = ds.Tables[0];
cboVille.DisplayMember = "VilleCP";
cboVille.ValueMember = "NumVille";
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// recherche de la PK dans la combo
public static Int32 posiCbo(ComboBox cbo, Int32 PK)
{
for (int i=0; i < cbo.Items.Count; i++)
{
cbo.SelectedIndex = i;
if (int.Parse(cbo.SelectedValue.ToString()) == PK)
return i;
}
return -1;
}
Question :
Y aurait il un moyen de retrouver la valeur de tous les selectedValue des items de la combo sans passer par leur sélection ?
babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 novembre 2015 25 sept. 2006 à 14:53
Pour la solution que tu me proposes, je suis obligé d'initialiser manuellement le hashTable ? Dans mon cas, je DS provient d'un SELECT dans une BD, je n'ai donc pas d'intervention manuelle pour initialiser la combo ...