我有许多字段,如果数据过期,我想将其显示为红色。

<%= 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";

希望其中之一适合您的情况。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top