Frage

Ich habe eine Reihe von Feldern, in denen ich die Daten rot anzeigen möchte, wenn sie abgelaufen sind.

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

Wenn das Datum kleiner als das heutige Datum ist, möchte ich, dass es rot angezeigt wird.Wie geht das am besten?

BEARBEITENDies ist für meine Detailansicht.Es ist nicht in einem Raster.Es handelt sich lediglich um eine Auflistung der Felder für den einzelnen Untervertrag.Es gibt Insurance_GL, Insurance_AL, Insurance_WC usw.Unterschiedliche Felder, nicht dasselbe Feld, das sich in einem Raster wiederholt.

War es hilfreich?

Lösung

Ich würde dem Feld eine Klasse hinzufügen, wenn der Wert kleiner als Null ist.

Ich bin also nicht sicher, welche Arten von HTML-Elementen Ihre Feldwerte einwickeln, aber mit Ihrem Beispiel würde ich dies tun:

generasacodicetagpre.

Andere Tipps

Es hängt wirklich davon ab, wie Sie Ihre Daten auf der Clientseite rendern.Verwenden Sie asp.net-Formulare mit einer GridView?Generieren Sie den HTML-Code für Ihre Daten selbst?

Normalerweise mache ich das mit CSS-Klassen.Ich werde eine Klasse für markierte Elemente haben, etwa so:

.late
{
    color: #f00;
}

Und im Code dahinter, in dem mein HTML generiert wird, wenn Sie den gesamten HTML-Code selbst erstellen:

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

Das wird schaffen <div>Item1</div> für einen nicht verspäteten Artikel und <div class="late">Item2</div> für einen verspäteten Artikel.Sie können auch eine Klasse für nicht verspätete Elemente einrichten, wenn Sie möchten, dass diese ebenfalls auf eine bestimmte Art und Weise gestaltet werden.Leicht genug.

Wenn es sich bei den Elementen, die Sie kennzeichnen, um Serversteuerelemente handelt und Sie den HTML-Code nicht selbst erstellen, können Sie ihnen eine Klasse zuweisen:

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

Wenn Ihre Daten an eine GridView gebunden sind, können Sie einen Event-Handler dafür haben RowDataBound, und machen Sie so etwas:

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";
    }
}

Sie können den Stil auch auf eine einzelne Zelle in der GridView anwenden:

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

Ich hoffe, eines davon passt zu Ihrem Szenario.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top