Значение datagridviewcell отказывается изменить - PullRequest
0 голосов
/ 06 декабря 2018

Я делаю настольное приложение в 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? .Абсолютно никто из них не работал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...