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

C# Discussion :

une combobox dynamique [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Par défaut une combobox dynamique
    bonjour, afin de remplir mon combobox d'une manière dynamique , c'est a dire, je le rempli en fonction de ce que l'utilisateur ecrit dans ce champs , par le code suivant :
    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
    36
    37
    38
    39
    40
    41
    private void comboBenef_TextChanged(object sender, EventArgs e)
            {
                string req;
                comboBenef.Items.Clear();
                connectionsql connexion = new connectionsql();
                if (comboBenef.Text == "")
                {
                    req = "select * from tab_beneficiaire";
                }
                else
                {
                    req = "select * from tab_beneficiaire where designation like @Beneficiaire";
                    connexion.AddParametre("@Beneficiaire", SqlDbType.NVarChar, "%" + comboBenef.Text + "%");
                }
                try
                {
                    connexion.req = req;
                    connexion.CreateReq();
                    connexion.ExecuteReader();
                    if (connexion.rdr.HasRows)
                    {
                        while (connexion.rdr.Read())
                        {
                            Item itm = new Item();
                            itm.Text = Convert.ToString(connexion.rdr.GetValue(1));
                            itm.Value = connexion.rdr.GetValue(0);
     
                            comboBenef.Items.Add(itm);
                        }
                    }
                    connexion.rdr.Dispose();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    connexion.Deconnection();
                }
            }
    cependant et ce qui m'étonne, c'est que quand je saisie quelque chose dans ma combobox, ça s'ecrite a l'envers , exemple si je saisie
    combo
    , ça m'ecris
    obmoc
    , et du coup j'ai plus de résultat
    ce qui est normal parceque
    obmoc
    n'existe pas dans ma BDD.
    quelqu'un saurait pourquoi la saisie se fait a l'envers dans ma combobx ?
    merci.

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Par défaut
    bonjour,
    au fait, j'ai pu localiser le problème, ça vient de l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    comboBenef.Items.Clear();
    quand je l'enlève, j'arrive a écrire normalement dans le champ combobox; le problème c'est que lors du remplissage de la combobox il ne la réinitialise pas, mais écrit la nouvelle liste au dessous de l'ancienne.
    c'est pour ça que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    comboBenef.Items.Clear();
    est obligatoire. comment l'utiliser correctement ? sinon, comment mettre a jour ma combobox avec ma nouvelle requête ?
    Merci.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Par défaut
    Bonjour,

    Le plus simple, tu touches rien à ta première méthode (avec le Items.Clear())
    et dans ton finally tu ajoutes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    comboBenef.SelectionStart = comboBenef.Text.Length;
    Ça repositionnera ton curseur en fin de chaine.

    Cdlt,
    Mvk

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Par défaut
    bonjour,
    merci encore une fois MvK0610 pour ta réponse;
    je viens de tester ce que tu viens de me conseiller, en effet ça marche bien pour filtrer la combobox et la remplir en fonction de ce que l'utilisateur tape dans ce champs; cependant j'ai rencontré deux petits soucis génant :

    1- la commande :
    comboBenef.DroppedDown = true;
    empêche le curseur de passer par dessus la fenêtre mais plutot en dessous ce qui m'empêche de séléctionner correctement un élément dans ma combobox.

    2-même en arrivant à séléctionner un des éléments, ce dernier ne s'affiche pas dans la combobx (enfin dans la zone texte), la combobox est réinitialiser et la zone texte de la combo reste vide.

    Merci.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Par défaut
    pas de soucis l'ami,

    1- la commande :
    Citation:
    comboBenef.DroppedDown = true;
    empêche le curseur de passer par dessus la fenêtre mais plutot en dessous ce qui m'empêche de séléctionner correctement un élément dans ma combobox.
    Met dans ton finally :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cursor.Current = Cursors.Default;
    ça forcera le ré-affichage de ton curseur.

    2-même en arrivant à séléctionner un des éléments, ce dernier ne s'affiche pas dans la combobx (enfin dans la zone texte), la combobox est réinitialiser et la zone texte de la combo reste vide.
    En fait le mieux serait de remplir ta comboBox pendant l'event comboBenef_KeyUp plutot que pendant le TextChanged ça evitera de relancer ta méthode pour rien quand tu séléctionne ton item.

    Avec ça plus de soucis à mon avis.

    MvK

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Par défaut
    bonjour MvK0610; merci grandement pour ta réponse.
    je viens te tester et ça marche nikel.
    merci de m'avoir aider encore une fois.

  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Par défaut
    juste un petit truc s'il y'a possibilité de le réglé !!
    au fait, je voudrai séléctionner un de mes élément de la combobox par clavier (touche entrer).
    par exemple j'ai trois élements dans ma combo, quand je parcours la combo avec la touche bas (touche directionnel) le première éléments est séléctionné systémtiquement, or moi, je veux choisir le deuxième par exemple (en validant par entrer et non par clique sur la souris).
    y'a t il un moyen de faire ça ???
    merci.

  8. #8
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Par défaut
    Bah là du coup dans le KeyUp faudrait gérer entrer + flèches directionnelles.
    Ca devrait ressembler à quelque chose comme ça dans le KeyUp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                if ((e.KeyCode == Keys.Down) || (e.KeyCode == Keys.Up))
                    e.Handled = true;
                else if (e.KeyCode == Keys.Enter)
                {
                    comboBox1.DroppedDown = false;
                }
                else
                {
                  Ta méthode déjà ecrite
                }
    MvK

  9. #9
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Par défaut
    merci encore MvK0610 pou ta réponse.
    je vais essayer ça et je te tiendrai informer.
    merci.

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

Discussions similaires

  1. Création d'une combobox dynamique
    Par lou87 dans le forum ASP
    Réponses: 1
    Dernier message: 14/01/2011, 20h32
  2. Réponses: 8
    Dernier message: 12/10/2009, 11h28
  3. Réponses: 18
    Dernier message: 11/03/2008, 10h23
  4. [VBA E] creation dynamique de la liste d'une combobox
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2006, 13h12
  5. [VBA-E] Sélectionner dynamiquement une ligne d'une ComboBox
    Par skual dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 22/02/2006, 16h02

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