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