2010-07-15 331 views
2

我有許多字段,如果數據過期,我想以紅色顯示數據。根據值更改顏色

<%= Html.Encode(String.Format("{0:d}", Model.Subcontract.insurance_GL))%>

如果日期小於今天的日期,那麼我希望它顯示爲紅色。做這個的最好方式是什麼?

編輯 這是我的詳細信息視圖。它不在網格中。這只是單個分包合同的字段清單。有,保險_GL,保險_AL,保險_WC等不同的領域,而不是一個網格重複的字段。

回答

4

如果值小於零,我會向該字段添加一個類。

所以我不知道是什麼類型的HTML元素都包裹你的字段值,但使用的例子,我這​​樣做:

<span class="<%=(Model.Subcontract.insurance_GL < 0 ? "red" : "black")%>" 
    <%= Html.Encode(String.Format("{0:d}", Model.Subcontract.insurance_GL))%> 
</span> 
3

這實際上取決於您如何在客戶端頁面中呈現數據。你使用的是一個GridView的asp.net表單嗎?你自己爲你的數據生成html嗎?

我通常用css類去解決這個問題。我有標誌項一類,像這樣:

.late 
{ 
    color: #f00; 
} 

而且在後面的代碼,其中正在生成我的HTML,如果你自己創建的所有HTML:

foreach(Item item in items) 
{ 
    string cls = ""; 
    if (item.IsLate) 
     cls = " class='late'"; 
    html += "<div" + cls + ">" + item.Text + "</div>"; 
} 

這將爲非延遲項目創建<div>Item1</div>,爲後期項目創建<div class="late">Item2</div>。如果您希望他們也以某種方式進行設計,您也可以爲非遲到的項目設置課程。很簡單。

如果您檢舉的項目是服務器控件,而你沒有自己創建HTML,你可以將類分配給他們:

if (item1.IsLate) 
    myTextBox.CssClass = "late"; 

如果您的數據綁定到一個GridView,你可以有一個事件處理程序RowDataBound,做這樣的事情:

protected void gridview_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     Item item = e.Row.DataItem as Item; 
     if (item.IsLate) 
      e.Row.CssClass = "late"; 
    } 
} 

你也可以運用到造型的單個細胞在GridView:

// 3rd cell 
e.Row.Cells[2].CssClass = "late"; 

希望這些適合您的情況。