Как получить ТЕКСТ выбранного элемента 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
,