根据值更改颜色
问题描述:
我有许多字段,如果数据过期,我想以红色显示数据。根据值更改颜色
<%= Html.Encode(String.Format("{0:d}", Model.Subcontract.insurance_GL))%>
如果日期小于今天的日期,那么我希望它显示为红色。做这个的最好方式是什么?
编辑 这是我的详细信息视图。它不在网格中。这只是单个分包合同的字段清单。有,保险_GL,保险_AL,保险_WC等不同的领域,而不是一个网格重复的字段。
答
如果值小于零,我会向该字段添加一个类。
所以我不知道是什么类型的HTML元素都包裹你的字段值,但使用的例子,我这样做:
<span class="<%=(Model.Subcontract.insurance_GL < 0 ? "red" : "black")%>"
<%= Html.Encode(String.Format("{0:d}", Model.Subcontract.insurance_GL))%>
</span>
答
这实际上取决于您如何在客户端页面中呈现数据。你使用的是一个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";
希望这些适合您的情况。