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#] windows form et ComboBox


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Points : 102
    Points
    102
    Par défaut [C#] windows form et ComboBox
    Bonjour à tous
    j'essaye de creer une application windows form qui permet de lire une base access.
    A l'aide d'une OpenFileDialog je recupere le FileName de la base access à ouvrir.
    Ensuite je liste les differentes tables de la base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    conn.ConnectionString= "Provider=Microsoft.Jet.OLEDB.4.0;"+"Data source="+MaBoite.FileName; 
    conn.Open();  
    DataTable schemaTable=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[] {null, null, null, "TABLE"}); 
    Choix.DataSource = schemaTable;
    Choix.DisplayMember = "TABLE_NAME";
    conn.Close();
    jusqua la tout va bien.
    Ensuite j aimerai que lorsque l'utilisateur choisit un item dans la combobox ca effectue une requete de type "SELECT * FROM"+ NomDeLaTable;
    mon problem c est que sur un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string sNomTable = Choix.SelectedItem.ToString();
    MessageBox.Show(sNomTable);
    (j'utilise une messagebox pour tester la valeur recuperer) je n'obtient pas le nom de la table mais System.Data.DataRowView

    quelqu un as t il une idée de ce qui ne va pas ?

    d'avance merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Points : 102
    Points
    102
    Par défaut
    c'etait la balise [C#] ? ou j ai oublier autre chose ?

  3. #3
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Utilise simplement Choix.Text

    Autrement tu peux convertir l'item en datarowview et recuperer le dr.Item("TABLE_NAME") (en string)

    [EDIT]
    Oui c'etait la balise
    Mets une datagrid sur ta form et fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DataGrid1.DataSource = schemaTable
    tu comprendras mieux, tu verras tout ce qu'il y a dans chaque Item (cad datarowview cad chaque ligne)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Points : 102
    Points
    102
    Par défaut
    le Choix.Text me renvoi la meme valeur que Choix.SelectedItem.
    Je vais donc essayer la conversion mais quel est l item qu il faut convertir ?

    [edit]
    je viens de lire ton edit, effectivement c ets un peu plus parlant avec un datagrid mais je vois pas comment recuperer la valeur qui en faite est dans le Choix.DisplayMember = "TABLE_NAME";

    faudrai un rajouter un tag [boulet] pour moi

  5. #5
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Chez moi je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            Dim conn As New OleDb.OleDbConnection
            Dim schemaTable As New DataTable
            conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data source=C:\codpost.mdb"
            conn.Open()
            schemaTable = conn.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
            ComboBox1.DataSource = schemaTable
            ComboBox1.DisplayMember = "TABLE_NAME"
            DataGrid1.DataSource = schemaTable
            MessageBox.Show(ComboBox1.Text)
    (avec la combobox en "dropdownList")

    - les valeurs affichees dans la combo sont les noms des tables
    - le texte affiche dans la combo est bien le nom de la table, donc le msgbox m'affiche "TABLE1"

    Tous les items de ta combo sont des DataRowView
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DataRowView dr = (DataRowView) ComboBox1.selecteditem;
    (je crois que la syntaxe c# est bonne)

    le nom de la table est une string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String latable = (String) dr.Item("TABLE_NAME");
    MessageBox.Show(latable);
    Quel envenement utilise-tu?

    [EDIT]
    faudrai un rajouter un tag [boulet] pour moi
    non rassure-toi (et eventuellement, si c'etait le cas, on a un joli: )

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Points : 102
    Points
    102
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void ChoixSelectedIndexChanged(object sender, System.EventArgs e)
    {
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;"+"Data source="+MaBoite.FileName; 			
    conn.Open();
    DataRowView dr = (DataRowView) Choix.SelectedItem; 
    String latable = dr.ToString();
    MessageBox.Show(latable);
    conn.Close();
    }
    j'utilise le index change

    j ai eu du mal a convertir ton code et j ai du m'y prendre mal car je retombe toujours sur le System.data ....
    mais sur le dr. je n ai pas de propriété Item

  7. #7
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    la combo affiche-t-elle bien le nom de la table?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void ChoixSelectedIndexChanged(object sender, System.EventArgs e)
    {
    MessageBox.Show("Select * FROM " + Choix.Text);
    }
    Assure-toi que la combo est bien remplie avant que ce code soit execute
    Si ca marche pas je suis chez moi dans 1h, je verifirais en C#

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Points : 102
    Points
    102
    Par défaut
    la combo affiche bien le nom de la table mais une messagebox sur combo.text ne renvoi pas le nom de la table.

    j ai upload ma source a cette adresse si ca peux t aider

    www.telynor.org/MainForm.cs

    merci beaucoup pour le temps que tu m accordes

  9. #9
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Effectivement il y avait pb d'evenement: la combo n'affichait pas encore le texte correct...

    L'evenement SelectionChangeCommited ne pose pas de pb

    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
     
     
    		void ChoixSelectionChangeCommitted(object sender, System.EventArgs e)
    		{
    			RefreshData();
    		}
     
    		void RefreshData()
    		{
    			string selStr ="SELECT * FROM "+Choix.Text;
    			OleDbDataAdapter Adapt= new OleDbDataAdapter (selStr,conn);
    			DataTable data_table = new DataTable();
    			Adapt.Fill(data_table);
    			Grille.DataSource=data_table;
    		}
    Suffit s'appeller RefreshData() au chargement de la db aussi

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Points : 102
    Points
    102
    Par défaut
    merci beaucoup :=))) tu es tres gentil (et bien plus douer que moi)

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

Discussions similaires

  1. Imbriquer combobox sur windows form
    Par Guillaume45 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/03/2012, 09h31
  2. [C#] - Windows form - combobox et dataSource
    Par omedo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/04/2011, 00h17
  3. [Windows Form]Label et combobox
    Par Anthone dans le forum Windows Forms
    Réponses: 18
    Dernier message: 06/06/2008, 10h01
  4. [debutant VC++ et C++] Windows form et OPENFILENAME
    Par Le Scandinave dans le forum MFC
    Réponses: 5
    Dernier message: 08/03/2005, 15h31
  5. [VB.NET] windows form traits
    Par DG JohnJohn dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/06/2004, 15h05

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