2010-02-22 77 views
0

我有一個DataGridView綁定到DataTableDataSetCustom Formatting Double

我將DataTable的所有列設置爲System.Double

我想DataGridView的最後一行顯示"PASS""FAIL"取決於該列中的值的一些條件

我該怎麼做?

思路:
lastCell = IIF(condition, Double.PositiveInfinity, Double.NegativeInfinity)
然後塗抹一些條件格式(Inf -> PASS, -Inf -> FAIL)到DataGridView的最後一行。

+0

你如何定義「最後一行」是你的數據表中的一行?或者它是你想創建的另一行? datagridview沒有像「最後一行」這樣的想法,因爲它需要處理排序等最後一行隨着時間而改變的地方 – cdkMoose 2010-02-22 17:45:30

+0

「最後一行」,我的意思是DataGridView中的最後一行,我想簡單地顯示PASS /失敗根據該列中的值。如Joe所述,我添加了一個DataGridView CellFormatting事件處理程序,該事件處理程序檢查列並相應地顯示PASS/FAIL。 – Steven 2010-02-22 20:31:51

回答

3

可以可能要創建和使用自定義NumberFormatInfo,將PositiveInfinitySymbolNegativeInfinitySymbol設置爲所需的字符串。

但我想說在DataGridView.CellFormatting事件處理程序中做這樣的事情會更好 - 這使得您在做什麼以及爲什麼更清晰,並且不會產生不希望的副作用,例如如果另一個單元由於被零除而碰巧具有無限的值。

類似下面的空氣代碼:

void dataGridView1_CellFormatting(object sender, 
    DataGridViewCellFormattingEventArgs e) 
{ 
    if ((e.ColumnIndex == whatever) && (c.RowIndex == whatever)) 
    { 
     // ... comment explaining what you're doing 
     if (condition) 
     { 
      e.Value = "PASS"; 
     } 
     else 
     { 
      e.Value = "FAIL"; 
     } 
     e.FormattingApplied = true; 
    } 
} 

道歉的C#代碼給你加了標籤的問題,VB.NET,但你會發現在該MDSN文檔在VB.NET樣本CellFormatting事件。

0

爲什麼不添加額外的列到布爾類型的表中?布爾在這裏更合適,因爲你有兩種狀態之一,它通過(true)或不通過(fail)。

您可以添加額外的DataColumn並手動填充值,也可以使用computed DataColumn,然後將列表綁定到DataGridView上具有「PASS」列的列表。

+0

PASS/FAIL適用於該列的值。將它作爲最後一行會更有意義。此外,轉移網格(使狀態集合成爲列而不是行)在我的情況下是沒有意義的。 – Steven 2010-02-22 16:56:15

0

建立您的條件,使其評估爲> = 0爲「通過」或< 0爲「失敗」,並在綁定到網格之前應用它(可能在查詢本身)。

{0:;「不合格」;「PASS」}然後在網格中使用這種格式字符串的DefaultCellStyle.Format屬性列

+0

我只想要應用於最後一行的格式。 – Steven 2010-02-22 17:53:51