我有许多字段,如果数据已过期,我想将其显示为红色。
<%= Html.Encode(String.Format("{0:d}", Model.Subcontract.insurance_GL))%>
如果日期小于今天的日期,那么我希望它显示为红色。做这个的最好方式是什么?
编辑 这是我的详细视图。它不在网格中。它只是单个分包合同的字段列表。有,insurance_GL、insurance_AL、insurance_WC 等。不同的字段,不同的字段在网格中重复。
我有许多字段,如果数据已过期,我想将其显示为红色。
<%= Html.Encode(String.Format("{0:d}", Model.Subcontract.insurance_GL))%>
如果日期小于今天的日期,那么我希望它显示为红色。做这个的最好方式是什么?
编辑 这是我的详细视图。它不在网格中。它只是单个分包合同的字段列表。有,insurance_GL、insurance_AL、insurance_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";
希望其中之一适合您的情况。