如何在条件下更改datagridview文本中的文本。

时间:2013-02-27 10:50:51

标签: winforms datagridview c#-3.0

我正在使用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)
          {

          }
      }

2 个答案:

答案 0 :(得分:1)

您尝试将.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)
    {

    }
}

答案 1 :(得分:1)

经过一番努力,这段代码对我很有用。我发布它可能是任何其他可以使用代码

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 ....