ASP.NET 4をC#で使用する。値に基づいてDetailsViewの色を設定する方法は?
私はDetailsView
を持っています。これはC#でコードビハインドを使用して実装していますが、基本的に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.
任意のアイデア?
アップデート2
私は、このコードでそれを解決した意味を成してきましたか?
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(10進数)dtlOpenTrade.DataItem.GetType()。GetProperty(field.DataField).GetValue(dtlOpenTrade.DataItem、null)); ' –