Как получить текст выбранного элемента Datagridview Combobox?

как получить выбранный элемент Combobox текст что находится внутри DataGridView? Я попытался использовать приведенный ниже код:

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

но это дает значение, связанное с этой ячейкой, а не текст выбранного элемента Combobox. Я также попробовал это:

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

но это тоже не помогло.

Я был бы признателен за вашу помощь. Заранее спасибо!

EDIT:

Допустим, у нас есть ComboBox с текстом as No и Yes и значения как 0 и 1 соответственно. То, что я хочу получить здесь, это текст Yes или No, когда Combobox изменен. Но я получаю значения 0/1, используя вышеуказанные коды. Надеюсь, это все прояснит.

обновление:

хорошо, поэтому я работал над этим вопросом и после многих усилий и с помощью моих коллег-членов, я смог решить проблему и получить необходимое решение:

вот решение:

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

4 ответов


чтобы получить выбранное значение и выбранный текст Combobox в DataGridView попробуйте следующий код

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

мне удалось вытащить это строковое значение из ячейки следующим образом:

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

самый простой способ понять это-использовать отладчик и посмотреть в объект dgvcmdcell. В этом вы найдете расширяемый узел "базы". Разверните его и просто просмотрите, и вы найдете любую необходимую вам информацию.


чтобы получить доступ к выделенному тексту в datagridview, вам нужна ссылка на CurrencyManager столбца Combobox. The CurrencyManager не имеет ничего общего с деньгами, но вместо этого управляет привязки между столбца и его источник. The CurrencyManager можно узнать настоящее выбор combobox.

Teh коды:

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

Примечание: нет необходимости бросать столбец в combobox, я просто сделал это, чтобы показать вам, какую колонку я проходил. Я использовал индекс 0, но используйте любой индекс, который является фактическим индексом вашего столбца combobox.

Теперь с помощью диспетчера валют вы можете получить доступ к текущему выбору datagrid для этого столбца (потому что это был столбец, который вы передали).

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

Итак, в моем случае источник данных combobox столбец был классом под названием Choice, choice выглядит так:

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

когда я получаю доступ к cm.Текущее свойство он вернет экземпляр класса choice, теперь я могу получить доступ к текст свойство моего класса выбора, чтобы увидеть, какое значение было выбрано. Очевидно, вам придется приспособить это к вашей конкретной ситуации. Надеюсь, это поможет.


Вы можете попробовать это : -

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

индексируйте столбец ячейки, на которую вам нужно посмотреть, в зависимости от индекса вашего ComboBoxColumn.