Je vous explique rapidement le problème.
Je cherche à remplir des comboBox de la manière suivante :
Un select dans une table
à partir de cela je crée une table avec une méthode générique qui me crée mes noms de colonnes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT reg_code, reg_code + '- ' + Region as Libelle from PO1
Ensuite je donne la table en source à mon ComboBox.
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 public static DataTable GetTableFromDB(clRequete requete) { SqlDataReader drReader = requete.QueryRequete(); DataTable dtTable = new DataTable(); int iNbrCol = drReader.FieldCount; int iNumCol = 0; //Crée et Ajoute autant de colonnes à la table qu'il y a de champs du DataReader do { DataColumn Colonne = new DataColumn(drReader.GetName(iNumCol)); dtTable.Columns.Add(Colonne); iNumCol += 1; } while (iNbrCol > iNumCol); int iNumLigne = 0; //Crée, Ajoute et Remplit les lignes while (drReader.Read()) { DataRow ligne = dtTable.NewRow(); dtTable.Rows.Add(ligne); iNumCol = 0; do { dtTable.Rows[iNumLigne][iNumCol] = drReader.GetValue(iNumCol); iNumCol += 1; } while (iNbrCol > iNumCol); iNumLigne += 1; } drReader.Close(); requete.CloseConnection(); return dtTable; }
Et enfin je lui donne le ValueMember et le DisplayMember
(le tout avec GetTableFromDB, la méthode au dessus)
Jusque là tout allait bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 clRequete cRequete = new clRequete("SELECT reg_code, reg_code + '- ' + Region as Libelle from PO1"); cbRattachement.DataSource = clGeneralMethode.GetTableFromDB(cRequete); cbRattachement.DisplayMember = "Libelle"; cbRattachement.ValueMember = "reg_code";
Mais maintenant ma string de requete va apsser par une genre de moulinette qui va la modifier.
EN fait les champs que je lui donne appartiennent à un catalogue qui lui permet d'avoir certaines infos, dont un Nom d'affichage différent.
La moulinette va transformer la requet en cela
Pour ceux qui aurait suivi jusque là, j'ai donc besoin de donner le ValueMember autrement que par le string "reg_Code".
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT isnull( PO1.reg_code,-1) as 'Code Région' , isnull( PO1.reg_code,-1) + '- ' + Region as Libelle from sysadm.PO1 PO1
Il me reste 2 solutions (je crois) :
-Avoir une méthode à laquelle je donne le "reg_code" et qui me renvoi "Code Région", le problème est que vu le catalogue, c'est très dur voir impossible (plusieurs champs st identique si l'on n'a pas la table dans laquelle on cherche)
-Donner le ValueMember par un numéro, qui correspondrait à l'ordre des champs dans le select.
En espérant avoir été assez clair, merci à ceux qui auront lu jusqu'au bout.
Partager