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#] DropDownList


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 69
    Par défaut [C#] DropDownList
    Je ne comprend pas pourquoi dès que je clique sur mIProfesseur, mon DDL prend la valeur de system.datarow, puis prend la valeur recherché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private void mIProfesseur_Click(object sender, System.EventArgs e)
    		{
    			this.Professeur(true,"Professeur");
    			this.JourHeure();
    			CLConnexion oCon = new CLConnexion();
    			oCon.OuvrirConnexion();
    			DataSet MonDataSet = new DataSet();
    			string Sql = "select * from prof";
    			MonDataSet = oCon.Select(Sql,"PROF");
    			CBPersonne.DataSource = MonDataSet.Tables["Prof"];
    			CBPersonne.DisplayMember = "ProfNom";
    			CBPersonne.ValueMember = "ProfNum";
    		}

    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
    private void CBPersonne_SelectedIndexChanged(object sender, System.EventArgs e)
    		{
    			string Sql;
    			bool Num;
    			int Prof;
    			Num = this.IsNumeric(this.CBPersonne.SelectedValue.ToString());
    			if(Num == false)
    				Prof = 1;
    			else
    				Prof = int.Parse(this.CBPersonne.SelectedValue.ToString());
    			if(mIProfesseur.Checked)
    			{
    				Sql = "select InterroJour,InterroPlage,InterroEleve from interrogation where interroprof = " + Prof + " group by interrojour,interroplage,InterroEleve";
    				this.EmploiDuTemps(Sql,"Interrogation");
    			}
    			else if(mIClasse.Checked)
    			{
    				Sql = "SELECT InterroJour, InterroPlage, InterroEleve FROM interrogation,eleve,classe_act ";
    				Sql = Sql + "WHERE interroeleve = elenum and eledivact = classecod and classenum = " + Prof;
    				Sql = Sql + " GROUP BY interrojour, interroplage, InterroEleve";
    				this.EmploiDuTemps(Sql,"Classe");
    			}
    		}

  2. #2
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut Re: [C#] DropDownList
    Avec ce code qui correspond directement à ta question tout semble ok, impose peut être le SelectedIndex de CBPersonne
    C'est peut aussi le temps de la connection qui retarde l'affichage, pourquoi n'utilises tu pas un Dataset en mode deconnecté :
    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
     
    private void mIProfesseur_Click(object sender, EventArgs e)
     {
       this.Professeur(true,"Professeur");
       this.JourHeure();
     
       CLConnexion oCon = new CLConnexion();
       oCon.OuvrirConnexion();
       string Sql = "select * from prof";
       DataSet MonDataSet = oCon.Select(Sql,"PROF");
     
       this.CBPersonne.DataSource = MonDataSet.Tables["Prof"];
       this.CBPersonne.DisplayMember = "ProfNom";
       this.CBPersonne.ValueMember = "ProfNum";
       this.CBPersonne.SelectedIndex = 0;
     }
    Ici , Je ne vois pas vraiment le lien entre ce code et ta question :
    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
     
    private void CBPersonne_SelectedIndexChanged(object sender, System.EventArgs e)
     {
        string value = ((ComboBox) sender).SelectedValue.ToString();
        string Sql;
        int Prof = 1;
        if(this.IsNumeric(value))
          {Prof = int.Parse(value);}
        if(this.mIProfesseur.Checked)
         {
           Sql = "SELECT InterroJour,InterroPlage,InterroEleve "
                 +"FROM interrogation "
                 +"WHERE interroprof = "
                 + Prof
                 + " GROUP BY  interrojour,interroplage,InterroEleve";
           this.EmploiDuTemps(Sql,"Interrogation");
         }
        else if(this.mIClasse.Checked)
         {
           Sql = "SELECT InterroJour, InterroPlage, InterroEleve "
                 +"FROM interrogation,eleve,classe_act "
                 +"WHERE interroeleve = elenum "
                 +"AND eledivact = classecod "
                 +"AND classenum = "
                 + Prof
                 +" GROUP BY interrojour, interroplage, InterroEleve";
           this.EmploiDuTemps(Sql,"Classe");
         }
     }

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 69
    Par défaut Re: [C#] DropDownList
    Citation Envoyé par neguib
    C'est peut aussi le temps de la connection qui retarde l'affichage, pourquoi n'utilises tu pas un Dataset en mode deconnecté :
    Je pensais que j'était en déconnecter

  4. #4
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut Re: [C#] DropDownList
    Citation Envoyé par Hmonglee
    Citation Envoyé par neguib
    C'est peut aussi le temps de la connection qui retarde l'affichage, pourquoi n'utilises tu pas un Dataset en mode deconnecté :
    Je pensais que j'était en déconnecter
    tu rigoles si à chaque mIProfesseur_click tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CLConnexion oCon = new CLConnexion(); 
       oCon.OuvrirConnexion();
    C'est que tu n'es certainement pas en mode deconnecté
    un mode deconnecté c'est que tu as chargé en une fois toutes les données necessaires dans ton Dataset et basta plus de connection mais accès direct aux données dans le dataset

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 69
    Par défaut
    lol oki donc je dès que ma page s'ouvre, je charge tout
    Merci neguib

    Je récupère tout.
    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
    CLConnexion oCon = new CLConnexion();
    			oCon.OuvrirConnexion();
    			string Sql;
     
    			// On récupère les classes actuelles
    			Sql = "select ClasseCod,ClasseNum from classe_act";
    			MonDataSet = oCon.Select(Sql,"CLASSE");
     
    			Sql = "select * from prof";
    			MonDataSet = oCon.Select(Sql,"PROF");
     
    			Sql = "select * from jour";
    			MonDataSet = oCon.Select(Sql,"JOUR");
     
    			Sql = "Select * from plage";
    			MonDataSet = oCon.Select(Sql,"PLAGE");
     
                                                    Sql = "Select * from interrogation";
    			MonDataSet = oCon.Select(Sql,"INTERROGATION");
    			oCon.FermerConnexion();
    J'exécute une requete dans ma table INTERROGATION.
    Je le récupère dans un datarowcollection.
    La ca me dit qu'un datarow ne peut pas etre datarowcollection.
    Comment faut il s'y prendre?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sql = "SELECT InterroJour,InterroPlage,InterroEleve " 
    					+"FROM interrogation " 
    					+"WHERE interroprof = " 
    					+ Prof 
    					+ " GROUP BY  interrojour,interroplage,InterroEleve"; 
    				DataRowCollection DR = MonDataSet.Tables["INTERROGATION"].Select(Sql);
    Et ensuite si je fais ce genre de requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sql = "SELECT InterroJour, InterroPlage, InterroEleve " 
    					+"FROM interrogation,eleve,classe_act " 
    					+"WHERE interroeleve = elenum " 
    					+"AND eledivact = classecod " 
    					+"AND classenum = " 
    					+ Prof 
    					+" GROUP BY interrojour, interroplage, InterroEleve";
    Dans quelle table dois je aller chercher ca?
    Est ce que je dois créer une table dans le dataset du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sql = "Select * from interrogation,eleve,classe_act";

  6. #6
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par Hmonglee

    J'exécute une requete dans ma table INTERROGATION.
    Je le récupère dans un datarowcollection.
    La ca me dit qu'un datarow ne peut pas etre datarowcollection.
    Comment faut il s'y prendre?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sql = "SELECT InterroJour,InterroPlage,InterroEleve " 
    					+"FROM interrogation " 
    					+"WHERE interroprof = " 
    					+ Prof 
    					+ " GROUP BY  interrojour,interroplage,InterroEleve"; 
    				DataRowCollection DR = MonDataSet.Tables["INTERROGATION"].Select(Sql);
    fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sql = "SELECT InterroJour,InterroPlage,InterroEleve " 
    					+"FROM interrogation " 
    					+"WHERE interroprof = " 
    					+ Prof 
    					+ " GROUP BY  interrojour,interroplage,InterroEleve"; 
    				DataRow[] DR = MonDataSet.Tables["INTERROGATION"].Select(Sql);
    et utilise le avec foreach

  7. #7
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    C'est sûr que j'ose à peine te contrarier Hmonglee vu le code que tu as déjà effectuer mais il y a une manière beaucoup plus directe de charger des données en cache tout en maintenant la capacité de les lier à leur source pour Update
    http://dotnet.developpez.com/tutoriels/ado2/csharp/

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 69
    Par défaut
    oula c'est prise de tête là, je suis perdu...

    Déjà pour prendre toute mes tables c'est faux car à chaque fois je créer un nouveau dataset et ca me garde tout.

    Bref tant pis je vais utiliser ma première méthode qui marche.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 69
    Par défaut
    En parlant de dataset, on peut utiliser un dataset d'un formulaire sur un autre formulaire ?

  10. #10
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Citation Envoyé par Hmonglee
    En parlant de dataset, on peut utiliser un dataset d'un formulaire sur un autre formulaire ?
    A toi de faire en sorte que ce ne soit pas le DataSet d'un formulaire mais le DataSet de l'application

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 69
    Par défaut
    là je vois pas trop, mais j'ai fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FrmDate Frm = new FrmDate(this);
    Frm.showdialog();
    Ca me permet d'utiliser dans FrmDate le dataset du formulaire actuelle.

  12. #12
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par Hmonglee
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FrmDate Frm = new FrmDate(this);
    Frm.showdialog();
    Ca me permet d'utiliser dans FrmDate le dataset du formulaire actuelle.
    non!
    declare ton dataset public ou crée un pointeur dans les forms filles !

  13. #13
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par Hmonglee
    oula c'est prise de tête là, je suis perdu...
    c'est quoi qui coince ?

    Citation Envoyé par Hmonglee
    Déjà pour prendre toute mes tables c'est faux car à chaque fois je créer un nouveau dataset et ca me garde tout.
    Que fais-tu exactement ?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 69
    Par défaut
    Citation Envoyé par doccpu
    Citation Envoyé par Hmonglee
    oula c'est prise de tête là, je suis perdu...
    c'est quoi qui coince ?

    Citation Envoyé par Hmonglee
    Déjà pour prendre toute mes tables c'est faux car à chaque fois je créer un nouveau dataset et ca me garde tout.
    Que fais-tu exactement ?
    J'ai reussi à le faire ca.
    Merci quand même

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 69
    Par défaut
    Je relance ce sujet pour une autre question.
    J'ai une basse access avec une table Plage (d'horaire) avec un champ qui est de type date/ eure en heure abrégé.
    Mais lorsque je la récupère dans une ddl, ca me retourne la date + l'heure.
    Comment pourrais je m'y prendre juste pour récupérer l'heure et non toutes la date entière.
    Les ajouter une par une ?

  16. #16
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Citation Envoyé par Hmonglee
    Mais lorsque je la récupère dans une ddl...
    C'est à dire : Utilises-tu le DataBindings :

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 69
    Par défaut
    euh non je fais ca seulement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    oDataSet = Frm.MonDataSet;
    cBPlage01.DataSource = oDataSet.Tables["PLAGE"];
    cBPlage01.DisplayMember = "PlageDeb";
    cBPlage01.ValueMember = "PlageCod";

  18. #18
    doccpu
    Invité(e)
    Par défaut
    ce type de problème est résolu dans la version 2 du framework avec les binding sources

  19. #19
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Citation Envoyé par doccpu
    ce type de problème est résolu dans la version 2 du framework avec les binding sources
    Ben normalement cela est déjà possible avec les frameworks precedentes.
    Par Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    oDataSet = Frm.MonDataSet;
    DataTable mySource =  oDataSet.Tables["PLAGE"];
    string myProperty = "SelectedItem";
    string myField = "PlageDeb"; 
     
    Binding bSelectedItem = new Binding(myProperty, mySource, myField);
    bSelectedItem.Format += new ConvertEventHandler(this.FormatBinding);
    bSelectedItem.Parse += new ConvertEventHandler(this.ParseBinding);
    this.cBPlage01.DataSource = mySource;
    this.cBPlage01.DisplayMember = myField;
    this.cBPlage01.ValueMember = "PlageCod";
    this.cBPlage01.DataBindings.Add(bSelectedItem)
    Seulement (j'ai testé) les opérations de formatge de l'affichage semble inopérant à l'aide des evnements Format et Parse du Binding; et après réflexion celà me semble normal car sur le principe ici un DropDownList est un Control pour un affichage en lecture seule (sans mise à jour necessaire en direction des données) donc on peut très bien se passer du DataBinding lorsqu'il y a necessité de reformater l'affichage de la donnée en cours
    Donc par exemple
    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
     
    private DataTable GetmyFormatTable(DataTable table)
     {
        DataTable newdt = new DataTable(table.TableName);
        DataRow myRow = null;
        DateTime valeur =null;
     
        foreach (DataColumn dc in table.Columns)
         {
            newdt.Columns.Add(new DataColumn(dc.ColumnName, typeof(string)));
         }
        foreach (DataRow dr in table.Rows)
         {
            myRow = newdt.NewRow;
            foreach (DataColumn dc In table.Columns)
             {
               if (dc.DataType = typeof(DateTime))
                {
                   valeur = (DateTime) dr[dc.ColumnName];
                   myRow[dc.ColumnName] = valeur.ToShortTimeString;
                }
              else
                { myRow[dc.ColumnName] = dr[dc];}
              }
            newdt.Rows.Add(myRow);
          }
         return newdt;
     }
     
    //...
    this.oDataSet = Frm.MonDataSet;
    DataTable mySource = this.oDataSet.Tables["PLAGE"];
     
    this.cBPlage01.DataSource = this.GetmyFormatTable(mySource);
    this.cBPlage01.DisplayMember = "PlageDeb";
    this.cBPlage01.ValueMember = "PlageCod";

  20. #20
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par neguib
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    this.cBPlage01.DataSource = mySource;
    this.cBPlage01.DisplayMember = myField;
    this.cBPlage01.ValueMember = "PlageCod";
    this.cBPlage01.DataBindings.Add(bSelectedItem)
    Seulement (j'ai testé) les opérations de formatge de l'affichage semble inopérant à l'aide des evnements Format et Parse du Binding;
    essaie pour voir car il me semble que si tu inverse ca passerais mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    this.cBPlage01.DataSource = mySource;
    this.cBPlage01.DisplayMember = bSelectedItem;
    this.cBPlage01.ValueMember = "PlageCod";
    this.cBPlage01.DataBindings.Add(myField)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Afficher une dropdownlist lors de modif dans une DataGrid
    Par MiJack dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/11/2004, 17h42
  2. [C#] [WinForms] ComboBox DropDownList
    Par RobinJulie dans le forum Windows Forms
    Réponses: 7
    Dernier message: 13/10/2004, 11h02
  3. [C#] Mode édition DropDownList
    Par bolo dans le forum ASP.NET
    Réponses: 7
    Dernier message: 14/07/2004, 17h25
  4. [C#] DropDownList dans un Table dynamiquement
    Par Mourad dans le forum ASP.NET
    Réponses: 12
    Dernier message: 30/04/2004, 15h09
  5. [C#] Pb DropDownList
    Par alexischmit dans le forum ASP.NET
    Réponses: 3
    Dernier message: 29/04/2004, 14h37

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