2

VWD 2010 Express、ASP.NET、VB.NET を使用。

データベース テーブルにバインドされた gridview があります。10 列が含まれており、そのうちの 1 つは非表示になっています。

現在の日付より前の期日 (最後の列、グリッドビューのインデックス 8) を持つ行の背景色を設定したいと思います。

これまでのところ、これがあります:(RowCreatedイベントで定義)

Dim i As Integer = 8
If e.Row.RowType = DataControlRowType.DataRow Then
    If e.Row.Cells(i).Text <= Date.Now.ToString Then
        e.Row.Cells(i).ForeColor = System.Drawing.Color.Red
    End If
End If

ただし、問題、エラーが表示されます。

「指定された引数は有効な値の範囲外でした。パラメータ: インデックス」

グリッドビュー内のすべてのオブジェクトはバインドされたフィールドです。このエラーを返さない唯一のインデックスはインデックス 0 ですが、何かアドバイスはありますか?

インデックス 0 を使用すると、各行の最初のセルのみが色付けされます。すべての行が赤く色付けされているように見えるため、日付にはまったく依存していないと思います。

4

1 に答える 1

4

列のインデックスを使用する代わりに、次のように列名を使用して修正を見つけることができました。

    If e.Row.DataItem("DueDate") < Date.Now.ToString Then
        e.Row.BackColor = Drawing.Color.Red
    End If

注:これは、RowCreatedではなくRowDataBoundで宣言しました。

完璧に動作します。同様の問題を抱えている他の人のために、これをここに残してください。この場合、インデックス作成はあまり正確ではないようです。

于 2012-11-14T10:29:22.517 に答える