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#.NET] DataGridViewComboBoxColumn, events et valeur de depart ?


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Par défaut [C#.NET] DataGridViewComboBoxColumn, events et valeur de depart ?
    Bonjour,

    J'ai un dataGridView et je n'arrive pas à updater le contenu d'une combobox d'une DataGridViewComboBoxColumn (enfin son contenu ...) Par contre, si après les changements, je déroule une autre combobox de la meme colonne, puis re celle d'avant, celle d'avant sera updatée. J'aimerais faire ca automatiquement lors d'un event.

    Par ailleurs, j'aimerais mettre une "valeur de départ" a cette combo box, une valeur qui serait selectionnée en position 0, sans avoir à dérouler le menu et choisir la 1ere cellule


  2. #2
    Membre averti
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Par défaut
    Je ré-explique, de façon plus claire.

    J'ai un DataGridView avec une colonne de type DataGridViewComboBoxColumn. Chaque cellule de cette colonne est une ComboBox intégrée au DataGridViewComboBoxColumn. Jusque la, on est d'accord ?

    Maintenant, je galere pour accéder à l'objet ComboBox d'une cellule. Pourquoi ? Parce que la combobox est intégrée, et n'a pas de nom propre. Si j'avais une Combobox à part entiere, crée par moi-meme, je ne poserais pas ma question, je sais que je peux y accéder comme ça : maComboBox.uneMéthode()

    Mais maintenant, je suis obligé d'y accéder via les cellules de mon datagrdiview, càd comme ça:

    monDatagridView.Rows[i].Cells[j].Value

    Je peux ajouter des elements à la combobox de cette maniere, par exemple. Mais comme l'objet référencé n'est pas une Combobox, mais une CELLULE de datagridview, les propriétés et events du type "selectedItem" & co n'existent pas. Je ne sais pas comment y accéder, et c'est exactement ma question ici. Et non, on cast du contenu de la cellule en ComboBox ne fonctionne PAS.

    Quand je dis "updater", il s'agit de mettre à jour le contenu de la DropDown List d'une combobox.
    Exemple concret: Une fonction supprime une valeur de la dropdownList. Mais quand la fonction a fait son boulot, la comboBox selectionnée contient toujours les anciennes valeurs. Pour "updater" son contenu, je suis obligé d'en dérouler une autre (combobox), puis quand je redéroule celle qui n'était pas updatée, elle l'est maintenant. Je recherche donc 2 choses:
    [*]Une façon d'accéder à une combobox d'une colonne de type DataGridViewComboBoxColumn comme s'il s'agissait d'une combobox normale, isolée[*]Une façon d'updater son contenu (un refresh, quoi)

    Ais-je été plus clair ?

  3. #3
    Membre averti
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Par défaut
    Pour attrapper l'event "indexChanged", j'ai ca pour le moment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            private void fenetre_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
            {
                ((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(Profile_SelectedIndexChanged);
            }
    J'ai trouvé ca sur MSDN...

    Je ne comprends pas trop ce qu'est un control, je sais juste qu'ailleurs, dans la methode qui est censée updater le contenu de la liste, je n'ai pas de DataGridViewEditingControlShowingEventArgs que je pourrais caster :/

  4. #4
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Ta méthode pour faire l'update c'est bien Profile_SelectedIndexChanged ?
    (Si j'ai bien compris)

  5. #5
    Membre averti
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Par défaut
    Euh non, celle la c'est pour récuperer le nouvel index, et lancer une action sur autre chose ... et ça marche. Par contre, celle pour updater la liste, je ne l'ai pas, c'est justement pourquoi je poste ici

  6. #6
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    ...
    Moi y'en n'a pas comprendre
    ...
    L'update est totomatic. Si tu supprimes un item de ta combobox, il n'apparait plus. Si toi tu le vois encore c'est qu'il y a un pb dans ton code (oui, je sais, c'est un peu facile comme réponse )

    Je te suggère d'essayer sur une Combobox toute conne dans une Form vide : tu supprimes un item et tu vois si le contenu de la combobox est updaté ou pas (et il le sera).

    A mon avis ton problème est un effet de bord. Ta DataGridViewColumnChepakoi elle est bindée avec une DataSource ? Ta DataSource est mise à jour aussi quand tu supprimes l'item ?

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Par défaut
    Je me permet de relancer :

    J'ai une liste d'objet que je vais mettre dans une DataGridView, les colonnes correspondent aux propriétés, dans cette objets j'ai trois propriétés qui sont d'autres objets.
    Je veux en faire des DataGridViewComboBoxColumn.
    Mon problème est que je dois faire des choses incroyables pour récupérer mes trois objets, par exemple pour un save sans les objets je peux juste faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    iList<Object> list = (iList<Object>)BindingSource.DataSource;
    // Appel methode d'insert
    si maintenant j'utilise mes comboBox je dois parcourir la liste pour récupérer la valeur sélectionnée pour pouvoir associé à mon 1e objet la valeur de la combo (donc meme pas ce qui est affiché, je ne sais pas y avoir accès)

    Est ce que réellement DataGridView est utilisable avec des objets, ou uniquement avec des requêtes SQL et donc DataSet ?

    Fix

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Par défaut
    ok je pense qu'on va dire que je n'ai rien dit

    Au lieu d'utiliser l'objet complet, j'utilise l'Id comme DataPropertyName.
    Et bon le DataSource c'est suivant, soit on lui attache directement via une stored procedure ou une table ,..... Soit on donne une list au moment voulu dans le programme à la datasource de notre colonne (DataGridViewComboBoxColumn).

    Enfin je ne sais pas trop ce qui est meilleur point de vue performance.

    Fix

Discussions similaires

  1. [vb.net][combobox] récupérer la valeur avant changement
    Par graphicsxp dans le forum Windows Forms
    Réponses: 36
    Dernier message: 19/10/2005, 10h59
  2. [VB.NET] [ODBC] Récupérer des valeurs avec requête ODBC?
    Par Pleymo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/03/2005, 16h38
  3. [CR 10][VB.NET] Crystal double les valeurs à afficher :'(
    Par nanou_toulouse dans le forum SDK
    Réponses: 2
    Dernier message: 02/03/2005, 17h19
  4. [VB.NET] Recherche ds dg., valeur affiche ou non?
    Par Pleymo dans le forum Windows Forms
    Réponses: 9
    Dernier message: 08/02/2005, 21h21
  5. Réponses: 3
    Dernier message: 26/07/2004, 12h03

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