A.Goutam
A.Goutam

Reputation: 3494

how to change text in datagridview text on condition .

I am using a datagridview and I want to display do conditional formatting means when I get for a cell M then I want to display Married.I try this but not sucess.

Here is my code:

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)
          {

          }
      }

Upvotes: 3

Views: 4221

Answers (2)

A.Goutam
A.Goutam

Reputation: 3494

After a little work this code work for me very fine . I am posting it may be any other can use the code

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

Upvotes: 2

spajce
spajce

Reputation: 7082

You're trying to use the .CellFormatting event with for loop statement which is not the proper way.

The CellFormatting event occurs every time each cell is painted, so you should avoid lengthy processing when handling this event. This event also occurs when the cell FormattedValue is retrieved or its GetFormattedValue method is called.

So every time the cell is painted, the for loop is running.

Try this:

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)
    {

    }
}

Upvotes: 1

Related Questions