如何在datagridview文本条件下改变文本



我正在使用一个datagridview,我想显示做条件格式意味着当我得到一个单元格M,然后我想显示Married。我尝试这个,但不成功。

下面是我的代码:
private void masterDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
      {
          try
          {
              for (int i = 0; i <= masterDataGridView.Rows.Count - 1; i++)
              {
                  String Value = masterDataGridView.Rows[i].Cells[17].Value.ToString();
                  if (Value == "M")
                  {
                      e.Value = "Male";
                  }
              }
          }
          catch (Exception ex)
          {
          }
      }

经过一些工作后,这段代码对我来说工作得很好。我张贴它可能是任何其他可以使用的代码

private void masterDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (masterDataGridView.Columns[e.ColumnIndex].Name.Equals("Gender"))
                      {
                          string _val = e.Value as string;
                          if (_val == null)
                              return;

                          switch (_val)
                          {
                              case  "M" :
                                  e.Value = "Male";
                                  break;
                              case "F":
                                  e.Value = "Female";
                                  break;
                          }
                      }
}

Chearss…

您正在尝试使用.CellFormatting事件与for loop statement,这是不正确的方式。

每次绘制每个单元格时都会发生CellFormatting事件,因此在处理此事件时,应避免冗长的处理过程。这事件也会在单元格FormattedValue被检索或其GetFormattedValue方法

因此,每次绘制单元格时,for loop都在运行。

试试这个:

private void masterDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    try
    {
        if (e.ColumnIndex >= 17 && e.ColumnIndex <= 24)
        {
            if (e.Value == "M")
                e.Value = "Married";
            else
                e.Value = "Not Married";
        }
    }
    catch (Exception ex)
    {
    }
}

最新更新