web-dev-qa-db-fra.com

Comment obtenir le texte de l'élément sélectionné dans Datagridview Combobox?

Comment obtenir l'élément sélectionné dans la liste déroulante text qui se trouve dans un DataGridView? J'ai essayé d'utiliser le code ci-dessous:

dataGridView1.Rows[1].Cells[1].Value.ToString()

Cependant, cela donne la valeur associée à cette cellule, pas le texte de l'élément sélectionné dans Combobox. J'ai aussi essayé ceci:

DataGridViewComboBoxCell cell = dataGridView1[1,1] as DataGridViewComboBoxCell;
string value = cell.Value.ToString();

Mais cela n'a pas non plus aidé.

J'apprécierais votre aide. Merci d'avance!

MODIFIER:

Disons que nous avons une liste déroulante avec le texte No et Yes et les valeurs 0 et 1, respectivement. Ce que je veux obtenir, voici le texte Yes ou No, lorsque la liste déroulante est modifiée. Mais ce que je reçois, ce sont les valeurs 0/1 en utilisant les codes ci-dessus. J'espère que cela clarifie les choses.

METTRE À JOUR:

Ok, je travaille donc sur ce problème et, après beaucoup d'efforts et avec l'aide de mes collègues, j'ai pu résoudre le problème et obtenir la solution requise:

Voici la solution:

string SelectedText = Convert.ToString(dataGridView1.Rows[0].Cells[1].FormattedValue.ToString());
8
palaѕн

Pour obtenir la valeur sélectionnée et le texte sélectionné de Combobox dans DataGridView, essayez de suivre le code.

string SelectedText = Convert.ToString((DataGridView1.Rows[0].Cells["dgcombocell"] as DataGridViewComboBoxCell).FormattedValue.ToString());
int SelectedVal = Convert.ToInt32(DataGridView1.Rows[0].Cells["dgcombocell"].Value);
15
Rahul Rajput

J'ai réussi à extraire cette valeur de chaîne de la cellule de cette façon:

DataGridViewComboBoxCell dgvcmbcell = dataGridView1[1, 0] as DataGridViewComboBoxCell;
String text = dgvcmbcell.EditedFormattedValue.ToString();

Le moyen le plus simple de comprendre cela consiste à utiliser le débogueur et à regarder dans l'objet dgvcmdcell. Vous y trouverez le nœud extensible "base". Développez-le et parcourez-le pour trouver toutes les informations dont vous avez besoin.

3
WozzeC

Pour accéder au texte actuellement sélectionné dans la vue datagrid, vous avez besoin d'une référence au CurrencyManager de la colonne Combobox. Le CurrencyManager n'a rien à voir avec de l'argent mais gère plutôt la liaison entre la colonne et sa source de données. Le CurrencyManager peut vous dire quelle est la sélection current de la liste déroulante.

Les codes:

    CurrencyManager cm = (CurrencyManager)DataGridView1.BindingContext[((System.Windows.Forms.DataGridViewComboBoxColumn)DataGridView1.Columns[0]).DataSource];

Remarque: il n'est pas nécessaire de convertir la colonne en une liste déroulante. Je viens de faire cela pour vous montrer la colonne dans laquelle je passais. J'ai utilisé l'index 0 mais j'utilise n'importe quel index qui est l'indice réel de votre colonne .

Maintenant, en utilisant le gestionnaire de devises, vous pouvez accéder à la sélection actuelle de la grille de données pour cette colonne (car il s'agissait de la colonne que vous avez transmise).

    cm.Current; //returns the current selection whatever that is

Donc, dans mon cas, la source de données de la colonne combobox était une classe appelée Choice, choix ressemble à ceci:

    public class Choice
    {
            public string Text
            {
                get;
                set;
            }
    }

Lorsque j'accède à la propriété cm.Current, elle retourne une instance de la classe choice. Je peux maintenant accéder à la propriété Text de la classe de mon choix pour voir quelle valeur a été sélectionnée. Vous devrez évidemment l'adapter à votre situation particulière. J'espère que ça aide.

0
Paul Murphy