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

Windows Forms Discussion :

[C#] ValueMember sans utiliser de string


Sujet :

Windows Forms

  1. #1
    Membre chevronné Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut [C#] ValueMember sans utiliser de string
    Je vous explique rapidement le problème.
    Je cherche à remplir des comboBox de la manière suivante :
    Un select dans une table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT reg_code, reg_code + '- ' + Region as Libelle from PO1
    à 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
    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;
    }
    Ensuite je donne la table en source à mon ComboBox.
    Et enfin je lui donne le ValueMember et le DisplayMember
    (le tout avec GetTableFromDB, la méthode au dessus)
    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";
    Jusque là tout allait bien.
    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
    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
    Pour ceux qui aurait suivi jusque là, j'ai donc besoin de donner le ValueMember autrement que par le string "reg_Code".
    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.

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 167
    Points : 220
    Points
    220
    Par défaut
    Je n'ai pas compris dans quel sens se situe ton problème avec ValueMember.
    Le problème est que dans le résutat de ta deuxième requête il n'y a pas de champ intitulé "reg_code", pour affecter une valeur dans ValueMember ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Points : 269
    Points
    269
    Par défaut
    Tu peux pas affecter ton ValueMembre à "Code Région" ?

  4. #4
    Membre chevronné Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Mais ça m'oblige à connaitre la correspondance "Code Région", ce qui n'est aps tout le temps évident.

    Pour le moment une méthode a été crée pour récupérée l'alias directement sur le string de la requete.
    J'ai finalement abandonné l'idée de la recherche sur un numéro.


    Merci pour vos infos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. REGEX: match deux strings séparées sans utiliser le point
    Par billybobbonnet dans le forum Accès aux données
    Réponses: 0
    Dernier message: 01/10/2014, 13h42
  2. palindrome sans utiliser <string.h>
    Par rikudou dans le forum C
    Réponses: 4
    Dernier message: 21/02/2012, 01h31
  3. Réponses: 5
    Dernier message: 06/10/2011, 17h58
  4. Réponses: 10
    Dernier message: 05/05/2006, 00h55
  5. Réponses: 9
    Dernier message: 30/11/2005, 19h18

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