2012-11-16 14 views
9

Wie erhalten Sie die Combobox ausgewählten Artikel Text, die in einem DataGridView ist? Ich habe versucht, den folgenden Code verwendet:Wie bekomme ich die TEXT von Datagridview Combobox ausgewählten Artikel?

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

Aber dies ergibt den Wert dieser Zelle zugeordnet ist, nicht die Combobox ausgewählte Element Text. Ich habe auch versucht dies:

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

Aber dies auch nicht helfen.

Ich würde Ihre Hilfe zu schätzen wissen. Danke im Voraus!

EDIT:

Lassen Sie uns sagen, wir haben eine Combobox mit Text als No und Yes und die Werte als 0 bzw. 1. Was ich hier bekommen möchte, ist der Text Yes oder No, wenn die Combobox geändert wird. Aber was ich bekomme, sind die Werte 0/1 unter Verwendung der obigen Codes. Hoffnung, die Dinge klar macht.

UPDATE:

Ok, so habe ich bisher zu diesem Thema zu arbeiten und nach vielen Anstrengungen und mit Hilfe von meinen Kolleginnen und Kollegen, ich habe in der Lage, das Problem zu lösen und die gewünschte Lösung zu erhalten:

Hier ist die Lösung:

string SelectedText = Convert.ToString(dataGridView1.Rows[0].Cells[1].FormattedValue.ToString()); 
+0

Überprüfen Sie dies [** "Link" **] (http://Stackoverflow.com/a/6051032/1577396) und antworten Sie mir .. –

+0

Wie @Mr_Green sagte - es ist nicht klar, was Sie suchen. Kannst du die Frage bearbeiten, um zu sagen, was deine erwarteten und tatsächlichen Ergebnisse sind? – Bobson

Antwort

15

Um

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

Ich glaube nicht, dass Sie im ersten Fall 'Convert.ToString()' wirklich brauchen, da Sie '.ToString()' auf dem FormatedValue aufrufen. Sehr nützlich, aber. – Bobson

+0

@Bobson Convert.ToString() behandelt den Nullwert und wenn ich nur .Tostring() schreibe und es einen Nullwert gibt, wird die Ausnahme zur Laufzeit ausgelöst. :) –

+1

Das ist ein wirklich guter Punkt. Bedeutet das aber, dass '.ToString()' das redundante Bit ist? – Bobson

-1

du versuchen könnte: -

dataGridView1.CurrentRow.Cells[0].Value.ToString(); 

Indexieren Sie die Spalte der Zelle, die Sie betrachten müssen, je nachdem, welcher Index Ihr ComboBoxColumn ist.

+0

Das bietet nichts anderes als was das OP hat - er kann schon den richtigen Wert der Zelle bekommen. – Bobson

+0

Ja @ Bobson du hast absolut recht. Ich bekomme bereits den richtigen Wert der Zelle. Ich muss nur den "Combobox-markierten Text" holen. –

2

konnte ich aus der Zelle auf diese Weise, dass die String-Wert ziehen:

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

Die einfachste Weg, um dies herauszufinden, um den Debugger und das dgvcmdcell Objekt suchen. In diesem finden Sie den erweiterbaren Knoten "base". Erweitern Sie es und schauen Sie einfach durch und Sie finden alle Informationen, die Sie benötigen.

+0

Danke @Wozzec für die Antwort, aber die Lösung hat nicht für mich funktioniert, wie ich wollte. Ich habe Ja und Nein als TEXT in der Combobox. Ich konnte den TEXT 'Yes' bekommen, aber als ich den Combobox-Wert auf' No' änderte, zeigte es immer noch den Wert 'Yes' an, wo es 'NO' hätte sein sollen als der ausgewählte TEXT. Ich hoffe du hast was mein Problem hier ist. –

+0

Wie fügen Sie Ihre Artikel zur Combobox hinzu? Ich habe eine Klasse erstellt, die Variablen Text und Wert enthält. Ich setzte dann die Combobox-Spalte, um eine Bindingsource mit einer Liste der Textvalue-Klasse als Quelle zu verwenden. Also für mich bekomme ich den TEXT "Nein" wenn ich den Combobox Artikel ändere. – WozzeC

+0

Ich bin dynamisch Combobox-Spalte zum Gitter hinzufügen und laden mit den Daten in der DataTable als Liste der Items. –

0

Für den Zugriff auf den aktuell ausgewählten Text in der Datagridview ausgewählter Wert und markierten Text von Combobox in Datagridview versucht folgende Codes zu erhalten, müssen Sie einen Verweis auf die CurrencyManager der Combobox Spalte. Die CurrencyManager hat nichts mit Geld zu tun, sondern verwaltet die Bindung zwischen der Spalte und ihrer Datenquelle. Die CurrencyManager kann Ihnen sagen, was die aktuelle Auswahl der Combobox ist.

Teh-Codes:

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

. Hinweis: es ist nicht notwendig, um die Säule zu einer Combobox zu werfen, ich das nur tat, Ihnen zu zeigen, welche Spalte I in vorging verwendet Index I 0 Verwenden Sie jedoch den Index, der den tatsächlichen Index Ihrer Combobox-Spalte angibt.

Mit dem Währungsmanager können Sie jetzt auf die aktuelle Auswahl des Datagrids für diese Spalte zugreifen (weil das die Spalte war, an der Sie übergeben wurden).

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

Also in meinem Fall die Datenquelle der Combobox Spalte eine Klasse war genannt Auswahl, sieht Wahl wie folgt aus:

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

Wenn ich die cm.Current Eigenschaft zugreifen wird es eine Instanz der Rückkehr Auswahlklasse, kann ich jetzt auf die Text Eigenschaft meiner Auswahlklasse zugreifen, um zu sehen, welcher Wert ausgewählt wurde. Sie müssen dies natürlich an Ihre spezielle Situation anpassen. Ich hoffe das hilft.

Verwandte Themen