2013-02-27 67 views
2

我使用一個DataGridView,我想這樣做顯示的條件格式是指,當我得到一個細胞M然後我想顯示Married。我嘗試這一點,但不是sucess。如何在條件上更改datagridview文本中的文本。

這裏是我的代碼:

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

      } 
     } 
+0

到底是什麼問題?你有例外嗎? – Blachshma 2013-02-27 10:59:12

+0

對象未被設置爲對象的實例。 – 2013-02-27 11:14:25

回答

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

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

    } 
} 
+0

是我需要給這個 – 2013-02-27 11:15:39

+0

columnIndex是的,你試過我的答案嗎? – spajce 2013-02-27 11:18:15

+0

是的,但沒有工作,我有24格在我的網格,但它停止後14沒有 – 2013-02-27 11:19:15