Вопрос

У меня есть несколько полей, в которых я хочу отображать данные красным цветом, если срок их действия истек.

<%= 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>
.

Другие советы

Это действительно зависит от того, как вы отображаете свои данные на клиентской странице.Используете ли вы формы asp.net с GridView?Вы сами генерируете 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