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

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

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

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

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

Но это также не помогло.

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

РЕДАКТИРОВАТЬ:

Допустим, у нас есть Combobox с текстом как 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.CurrentRow.Cells(Column.name).EditedFormattedValue.ToString()

EditedFormattedValue объект дает текущее форматированное значение ячейки в DataGridViewнезависимо от того, редактируется ли ячейка или находится в режиме редактирования. Удобнее сниматьComboBox выделение или любое значение ячейки в DataGridView.

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

Коды:

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

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

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

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

Так что в моем случае источником данных столбца combobox был класс Choice, выбор выглядит следующим образом:

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

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

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

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

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

Другие вопросы по тегам