Я делаю настольное приложение в c #.Когда пользователь вводит что-то в соответствующий фильтр текстового поля, источник данных изменяется, чтобы получить информацию из таблицы, которую я хочу получить, что приводит к следующему коду:
private void dadosDataGridView_DataSourceChanged(object sender, EventArgs e)
{
DataTable dt = (DataTable)dadosDataGridView.DataSource;
if (dt.Columns.Contains("versao"))
{
...
}
else if (dt.Columns.Contains("periodicidade"))
{
dadosDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dadosDataGridView.Columns["idlayout"].Visible = false;
dadosDataGridView.Columns["idmodulo"].Visible = false;
dadosDataGridView.Columns["nomemodulo"].HeaderText = "Nome do Módulo";
dadosDataGridView.Columns["nomemodulo"].MinimumWidth = 600;
dadosDataGridView.Columns["periodicidade"].HeaderText = "Periodicidade";
//doing this to not have weird conversion problems
foreach (DataGridViewColumn coluna in dadosDataGridView.Columns)
{
coluna.ValueType = typeof(string);
}
//
foreach (DataGridViewRow linha in dadosDataGridView.Rows)
{
linha.Cells["periodicidade"].ValueType = typeof(string);
string texto = new ModulosBLL().ConvertePeriodicidadeInteiroEmTexto(Convert.ToInt32(linha.Cells["periodicidade"].Value));
DataGridViewCell tb = linha.Cells["periodicidade"];
tb.Value = texto;
}
}
...
}
Столбец «periodidade» имеет значения от 1 до4, что я пытаюсь преобразовать во что-то читаемое для пользователя:
public string ConvertePeriodicidadeInteiroEmTexto(int valordaperiodicidade)
{
string nome = string.Empty;
switch (valordaperiodicidade)
{
case 1:
nome = "Mensal";
break;
case 2:
nome = "Semestral";
break;
case 3:
nome = "Anual";
break;
case 4:
nome = "Ocasional";
break;
default:
break;
}
return nome;
}
По какой-то причине значение gridviewcell просто не меняется.Переменная "texto" даже возвращает правильный текст, но значение tb.Value остается int .
Редактировать: я пробовал КАЖДУЮ идею в этом другом потоке Как программно установитьзначение ячейки в DataGridView? .Абсолютно никто из них не работал