2

有効期限が切れた場合にデータを赤で表示したいフィールドがいくつかあります。

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

日付が今日の日付よりも短い場合は、赤で表示したいと思います。これを行うための最良の方法は何ですか?

編集 これは私の詳細ビュー用です。グリッドにはありません。これは、個々の下請けのフィールドのリストにすぎません。、insurance_GL、insurance_AL、insurance_WCなどがあります。グリッド内で繰り返される同じフィールドではなく、異なるフィールド。

4

2 に答える 2

4

値がゼロ未満の場合は、フィールドにクラスを追加します。

したがって、どのタイプのHTML要素がフィールド値をラップしているかはわかりませんが、例を使用して次のようにします。

<span class="<%=(Model.Subcontract.insurance_GL < 0 ? "red" : "black")%>"
  <%= Html.Encode(String.Format("{0:d}", Model.Subcontract.insurance_GL))%>
</span>
于 2010-07-15T04:03:52.837 に答える
3

これは、クライアントページでデータをどのようにレンダリングしているかによって異なります。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";

これらのいずれかがシナリオに適合することを願っています。

于 2010-07-15T04:03:27.800 に答える