2013-02-20 79 views
2

我想根據當前日期更改我的gridview上的背景顏色。下面的代碼是可行的,但未來的日期會以兩天後開始,而不是明天的一天。我是否在代碼中遺漏了某些東西,或者它應該進行不同的修改? 。 Gridview根據日期更改背景顏色

If e.Row.RowType = DataControlRowType.DataRow Then 
        Dim data As DateTime = Convert.ToDateTime(DirectCast(e.Row.DataItem, DataRowView)("Date").ToString()) 
        Dim diff As TimeSpan 
        diff = DateTime.Now.Subtract(data) 
        Dim days As Integer = diff.Days 
        'Yellow = past date/White = current date/Blue = future date 
        If days > 0 Then 
         e.Row.BackColor = Drawing.ColorTranslator.FromHtml("#FFFFBB") 'past date' 
        ElseIf days < 0 Then 
         e.Row.BackColor = Drawing.ColorTranslator.FromHtml("#BAD8FF") 'future date' 
        ElseIf days = 0 Then 'present date 
         'do nothing 
        End If 
       End If

回答

1

你可能想使用的DateTimeDate財產截斷時間:

Dim data = DirectCast(e.Row.DataItem, DataRowView) 
Dim day As Date = data.Row.Field(Of Date)("Date").Date 
Dim daysDiff As Int32 = (Now.Date - day).Days 
+0

謝謝您的答覆。我在我的代碼中應用了你的建議,但在「Dim date As Date = data.Row.Field(Of Date)(」Date「)時出現錯誤。 ? – 2013-02-20 17:38:47

+0

我使用你的建議解決了這個問題我修改了代碼Dim data As DateTime = Convert.ToDateTime(DirectCast(e.Row.DataItem,DataRowView)(「Date」)。ToString())Dim date As Date = data.Date Dim daysDiff As Int32 =(Now.Date - day).Days',它沒有產生任何錯誤,明天的日期現在以藍色突出顯示。我應該以不同的方式寫入它,還是保持它原樣? – 2013-02-20 18:00:28

+0

@g_shockTan :爲什麼您將日期字段轉換爲字符串,然後回到日期,效率低下,並且可能導致本地化問題。您是否將日期存儲爲字符串? – 2013-02-20 20:45:38