datagridviewcell值拒绝更改

时间:2018-12-06 11:18:49

标签: c# datagridview

我正在用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;
              }
        }     
        ...   
   }

“ periodicidade”列的值是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 值。

编辑:我已经在另一个线程上尝试了所有想法 How to programmatically set cell value in DataGridView?。绝对没有一个工作

0 个答案:

没有答案