在C#中使用ASP.NET 4。如何在基於值的DetailsView上設置顏色?
我有一個DetailsView
我在C#中使用代碼隱藏填充,基本上綁定從SQL Server DataTable
到DetailsView
。我想在細節視圖中更改值的顏色,以使正值爲綠色,零值爲默認值,負值爲紅色。什麼是最好的方法來做到這一點?
UPDATE
@Jay我試過這段代碼:
private System.Drawing.Color GetColorValue(decimal value)
{
if (value > 0)
return System.Drawing.Color.Green;
else if (value < 0)
return System.Drawing.Color.Red;
return System.Drawing.Color.White;
}
protected void dtlOpenTrade_DataBound(object sender, EventArgs e)
{
foreach (BoundField field in dtlOpenTrade.Fields)
{
field.ItemStyle.BackColor = GetColorValue((decimal)dtlOpenTrade.DataItem.GetType().GetProperty(field.DataField).GetValue(dtlOpenTrade.DataItem, null));
}
}
但我得到這個錯誤:System.NullReferenceException: Object reference not set to an instance of an object.
任何想法?
UPDATE2
我這個代碼解決它,有意義嗎?
void RenderDetailsViewColour(DetailsView dtl)
{
foreach (DetailsViewRow row in dtl.Rows)
{
if (row.Cells[0].Text != "TradeId")
{
row.Cells[1].BackColor = GetColorValue(Convert.ToDecimal(row.Cells[1].Text));
}
}
}
感謝周杰倫,我已經更新了我Q,你可以有一個快速瀏覽一下? –
異常來自哪裏?我假設並簡化您的數據是小數。您綁定的對象可能不同。 – Jay
我使用小數,錯誤來自'field.ItemStyle.BackColor = GetColorValue((decimal)dtlOpenTrade.DataItem.GetType()。GetProperty(field.DataField).GetValue(dtlOpenTrade.DataItem,null));' –