Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
627 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#.NET] DataGridViewComboBoxColumn, events et valeur de depart ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#.NET] DataGridViewComboBoxColumn, events et valeur de depart ?

n°1439046
ParadoX
Posté le 08-09-2006 à 13:35:20  profilanswer
 

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
 
 :sweat:


Message édité par ParadoX le 12-09-2006 à 14:16:51

---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
mood
Publicité
Posté le 08-09-2006 à 13:35:20  profilanswer
 

n°1439068
ParadoX
Posté le 08-09-2006 à 13:52:23  profilanswer
 

Autremenent dit, comment recuperer les Events d'une ComboBox issue d'une DataGridViewComboBoxColumn ? un cast de la case en combobox ne fontionne pas :(


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1440924
ParadoX
Posté le 12-09-2006 à 14:13:47  profilanswer
 

Petit Up car je n'ai pas trouvé toutes mes réponses: 1er post mis à jour !


Message édité par ParadoX le 12-09-2006 à 14:14:45

---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1441310
_Mose_
Lonesome coder
Posté le 12-09-2006 à 18:01:59  profilanswer
 

C hyper flou ton pb. C'est du petit nègre d'utilisateur maladroit, pas un langage de programmeur.
 
* "Je n'arrive pas à updater le contenu d'une combobox"
  - Quand tu fais quoi ? Quand tu chantes devant ton PC ? bah moi non plus, merde....
 
* Qu'est ce que tu entends par "updater"
  - elle va chopper les valeurs où ? elle les invente ?
 
 
Bon sinon pour le second problème, tu as trois propriétés "SelectedItem", "SelectedValue" et "SelectedIndex" sur la combo box.Tu devrais trouver ton bonheur...

n°1441338
ParadoX
Posté le 12-09-2006 à 18:44:13  profilanswer
 

Tu m'as mal compris. 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 ? :)

Message cité 1 fois
Message édité par ParadoX le 12-09-2006 à 18:44:41

---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1441340
_Mose_
Lonesome coder
Posté le 12-09-2006 à 18:53:12  profilanswer
 

ParadoX a écrit :

Ais-je été plus clair ? :)

Nettement !
Bonne change, je peux pas t'aider, je hais les colonnes toute faite dans les DataGrid, je rfais tout à la main :)

n°1441587
ParadoX
Posté le 13-09-2006 à 10:28:49  profilanswer
 

Hmpf ok merci qd meme ... qqun d'autre ? :sweat:


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1442097
moi23372
Posté le 13-09-2006 à 22:15:06  profilanswer
 

monDatagridView.Rows[i].Cells[j].Controls ça n'existe pas? si ça existe, tu peux caster vers un combo et c'est vachement simple

n°1442279
ParadoX
Posté le 14-09-2006 à 11:03:39  profilanswer
 

moi23372 a écrit :

monDatagridView.Rows[i].Cells[j].Controls ça n'existe pas? si ça existe, tu peux caster vers un combo et c'est vachement simple


 
Non, justement :/
Pour attrapper l'event "indexChanged", j'ai ca pour le moment:
 

Code :
  1. private void fenetre_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
  2.         {
  3.             ((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(Profile_SelectedIndexChanged);
  4.         }


 
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 :/


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1442923
moi23372
Posté le 15-09-2006 à 11:20:45  profilanswer
 

"Je ne comprends pas trop ce qu'est un control"
 
tu te fou de moi j'espère...?
un control est un composant graphique. Control est la class de base pour tous les composants graphiques en .NET.  
C'est fou quand même de pas savoir ça et de vouloir programmé en C#. C'est comme dire qu'on ne sait pas ce que c'est Object :D

mood
Publicité
Posté le 15-09-2006 à 11:20:45  profilanswer
 

n°1442977
ParadoX
Posté le 15-09-2006 à 12:19:34  profilanswer
 

Bon, eh bien je sais maintenant ^^ Je savais juste pas que c'était appellé comme ca :)
Et ca ne résoud pas mon probleme :o


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1443169
_Mose_
Lonesome coder
Posté le 15-09-2006 à 16:46:42  profilanswer
 

Tu cast ton control en combobox et le tour est joué.

n°1444955
ParadoX
Posté le 19-09-2006 à 23:35:55  profilanswer
 

Le probleme, c'est qu'il n'y a pas de control :/


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1445219
_Mose_
Lonesome coder
Posté le 20-09-2006 à 12:59:52  profilanswer
 

Soyons plus précis.
Dans quelle méthode tu veux récupérer ta combobox ?
Et ne répond pas avec des mots, mais avec du code, paske je capte rien à ce que tu veux faire et à quel endroit se trouve ton pb.

n°1445255
ParadoX
Posté le 20-09-2006 à 13:25:30  profilanswer
 

Appellons cette methode test(). Elle enleve un element de la dropdownlist de la combobox de la ligne actuelle.
 

Code :
  1. // code irrélévant avant
  2. Profile.Items.RemoveAt(position + 1); // Profile est la DataGridViewComboBoxColumn
  3. // code irrélévant ensuite


 
 
C'est a la fin de cette methode que j'aimerais récupérer ma combobox. C'est plus clair ?


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1445304
_Mose_
Lonesome coder
Posté le 20-09-2006 à 14:03:32  profilanswer
 

Je ne connais absolument pas les DataGridColumn-magique-avec-combobox, mais vu que perone n'a de pistes pour toi, je vais essayer.
Après un rapide coup d'oeil dans la doc, il y a une propriété Items dans ta colonne, qui contient les items affichés par toutes les ComboBox de ta DataGridView.
 
T'es sur que c'est possible de n'en modifier qu'une seule ?  J'ai un vieux doute...

n°1445321
ParadoX
Posté le 20-09-2006 à 14:26:20  profilanswer
 

Le probleme, c'est justement que ces items sont valables pour TOUTES les lignes du DataGridView. Je ne sais pas comment faire afficher une liste différente pour chaque ligne. Mais ce n'est pas trop grave dans mon cas, vu que jai n'ai pas besoin d'avoir des valeurs differentes. Ce dont jai besoin, c'est d'effectuer un refresh ou un update sur la liste déroulante de toutes les cases.  
 
Et la DataGridViewComboBoxColumn n'a pas de methode pareille, alors le seul moyen serait de caster chaque ligne en combobox et d'appeller sa methode update. Mais pour ce faire, il me fait un controle, et ca, je ne sais pas comment le choper.
 
Si ca peut servir, j'ai ca pour choper le Index changed d'une de ces combobox:
 

Code :
  1. private void fenetre_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
  2.         {
  3.             ((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(Profile_SelectedIndexChanged);
  4.         }


 
La, on peut caster, parce quon recupere un DataGridViewEditingControlShowingEventArgs (sic). Mais dans ma methode, je n'ai pas ca :/


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1446217
_Mose_
Lonesome coder
Posté le 22-09-2006 à 12:23:27  profilanswer
 

Hmm...
Ton DataGridViewComboBoxColumn il a bien une propriété Items ?
http://msdn2.microsoft.com/fr-fr/l [...] items.aspx
Quand tu les change, ça ne convient pas ?
C'est là que tu as le pb du refresh ?
 
Sinon pour afficher une liste différente, je ne sais pas, j'ai pas l'impression vu ce que je lis dans la doc (mais je suis pas rentré dans le détail).
Sinon vu comme tu te prend la tête, je me demande si une bête colonne avec des ComboBox que tu créé toi-même ça serait pas plus simple ?

n°1446236
ParadoX
Posté le 22-09-2006 à 12:57:56  profilanswer
 

_Mose_ a écrit :

Hmm...
Ton DataGridViewComboBoxColumn il a bien une propriété Items ?
http://msdn2.microsoft.com/fr-fr/l [...] items.aspx
Quand tu les change, ça ne convient pas ?
C'est là que tu as le pb du refresh ?
 
Sinon pour afficher une liste différente, je ne sais pas, j'ai pas l'impression vu ce que je lis dans la doc (mais je suis pas rentré dans le détail).
Sinon vu comme tu te prend la tête, je me demande si une bête colonne avec des ComboBox que tu créé toi-même ça serait pas plus simple ?


 
Jep, il y a une propriété Items, et c'est exactrement la qu'il y a un probleme de refresh :)
Je n'ai pas songé a faire autrement, vu qu'un datagridview proposer une DataGridViewComboBoxColumn ^^
Ca serait plus chiant qu'autre chose de tout changer :/
 
merci qd meme pour ton aide :jap:


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1446292
_Mose_
Lonesome coder
Posté le 22-09-2006 à 14:15:50  profilanswer
 

ParadoX a écrit :

Jep, il y a une propriété Items, et c'est exactrement la qu'il y a un probleme de refresh :)


Oki, donc pour résumer, ta question c'est :
"pourquoi quand je modifie la collection Items d'une DataGridViewComboBoxColumn, les éléments contenus dans mes combobox ne sont pas mises à jour immédiatement ?"
 
(dsl, j'aime bien la précision, le français c'est tellement ambigu)

n°1446329
ParadoX
Posté le 22-09-2006 à 14:53:56  profilanswer
 

Jep c'est ca, avec la précision suivante : la liste n'est pas updatée quand elle est selectionnée au moment de la mise à jour. Il faut donc en selectionner une autre, puis la reselectionner pour la voir updatée :)


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1446333
_Mose_
Lonesome coder
Posté le 22-09-2006 à 14:57:07  profilanswer
 

Dans quelle méthode tu modifies la collection Items ?
Ca me parait bizarre ton problème quand même.

n°1446338
ParadoX
Posté le 22-09-2006 à 15:19:14  profilanswer
 


Je fais juste un items.add() ^^
Maintenant je cherche un Items.refresh(), mais je ne trouve pas :/


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1446397
_Mose_
Lonesome coder
Posté le 22-09-2006 à 16:47:27  profilanswer
 

Dans quelle méthode appelles-tu ton Items.Add(...) ?

n°1446892
moi23372
Posté le 24-09-2006 à 20:21:03  profilanswer
 

en fait, le problème pourrait être résolu très facilement si la grille était liée à un bindingSource.
 
il suffirait de faire (.NET 2.0 uniquement)
monBindingSource.RefreshCurrentItem();
 
mais sinon je suis certain qu'il doit y avoir une méthode de refresh ou d'update dans la grille. Quitte à forcer toi même la combo à prendre une valeur (AFTERROWACTIVATE)  

n°1446977
ParadoX
Posté le 25-09-2006 à 09:40:42  profilanswer
 

_Mose_ a écrit :

Dans quelle méthode appelles-tu ton Items.Add(...) ?


 

Code :
  1. public void test(string test)
  2. {
  3. Items.Add(string test)
  4. }


 
 [:god]  
 

moi23372 a écrit :

en fait, le problème pourrait être résolu très facilement si la grille était liée à un bindingSource.
 
il suffirait de faire (.NET 2.0 uniquement)
monBindingSource.RefreshCurrentItem();
 
mais sinon je suis certain qu'il doit y avoir une méthode de refresh ou d'update dans la grille. Quitte à forcer toi même la combo à prendre une valeur (AFTERROWACTIVATE)


Bah ouais mais je suis pas dans le cas d'un datagridview bindé :/


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1447205
_Mose_
Lonesome coder
Posté le 25-09-2006 à 16:45:09  profilanswer
 

ParadoX a écrit :

_Mose_ a écrit :

Dans quelle méthode appelles-tu ton Items.Add(...) ?

Code :
  1. public void test(string test)
  2. {
  3. Items.Add(string test)
  4. }


Naaaaaaaan... tu le fais exprès ?
C'est moi qui m'exprime mal ?
Je recommence :
QU'EST CE qui déclenche l'appelle à cette méthode ?
Le click sur un bouton ?
Le load de ta page ?
quoi ? quand ? comment ?
On est dans une interface graphique, donc on parle de programmation évènementielle.
Quel évènement doit déclencher cet update ?
 
Oui c'est important. Si la modification de la collection Items ne provoque pas la mise à jour des ComboBox, c'est que tu dois appeler ton code à un endroit à la con où c'est pas top.

n°1447219
ParadoX
Posté le 25-09-2006 à 17:06:59  profilanswer
 

Je peux te copier coller le code, mais c'est parce que la ligne actuelle est selectionnée qu'elle ne se mets pas à jour. Toutes les autres se mettent à jour. On s'est mal compris, je crois ^^


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1447237
_Mose_
Lonesome coder
Posté le 25-09-2006 à 17:32:01  profilanswer
 

Ah oki.. je comprend mieux.
 
Et si tu la déselectionnes temporairement ? :)

n°1447256
ParadoX
Posté le 25-09-2006 à 18:18:19  profilanswer
 

C'est justement l'aspect "bricolage" qui je gene :)
C'est pourquoi j'ai demandé si qqun connassait une autre facon plus propre ^^


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#.NET] DataGridViewComboBoxColumn, events et valeur de depart ?

 

Sujets relatifs
(Résolu) Net Use dans un fichier batch ( avec loggin)Nom de variable en fonction de la valeur d'une autre
Formulaire php Valeur envoyer NULL et non vide[C# .NET] upload d'un fichier et thread limitant le temps d'upload ...
[C# .NET][HtmlInputFile] sélectionner une extension de fichier[C# .NET] Comment limiter la taille d'un fichier à uploader ?
[Resolu][C#.NET] XML -> Un lire des noeuds un après l'autre ? [VB.NET] Sauvegarde/Restauration base SQL -> C'est possible?
[Resolu][DataGridView] Action quand on change la valeur d'une CheckBoxPb dans la condition if valeur null
Plus de sujets relatifs à : [C#.NET] DataGridViewComboBoxColumn, events et valeur de depart ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR