Я хотел бы разрешить моему элементу управления Gridview отображать различные цвета в зависимости от условий. У человека назначено свидание для медицинского осмотра. Я хочу, чтобы gridview отображал зеленый цвет, когда настал день. Я хочу, чтобы дата отображалась красным цветом, когда прошел один день с даты родов, и оранжевым, как за 7 дней до медицинской даты. Мне удалось исправить это только для зеленого цвета, который показывает медицину в день, но у меня возникли трудности с другими условиями.
Это то, что у меня есть на данный момент. Первая часть оператора If работает, когда я изменяю строку на зеленую в зависимости от даты выполнения и текущей даты, которая равна, но я не знаю, как установить оператор if для других условий, упомянутых выше. Пожалуйста помогите
If e.Row.RowType = DataControlRowType.DataRow Then
Dim row As DataRow = (CType(e.Row.DataItem, DataRowView)).Row
Dim DueDate As DateTime = row.Field(Of DateTime)(7)
If DueDate.Date = DateTime.Today Then
e.Row.Cells(0).BackColor = System.Drawing.Color.Green
e.Row.Cells(0).ForeColor = System.Drawing.Color.White
e.Row.Cells(1).BackColor = System.Drawing.Color.Green
e.Row.Cells(1).ForeColor = System.Drawing.Color.White
e.Row.Cells(2).BackColor = System.Drawing.Color.Green
e.Row.Cells(2).ForeColor = System.Drawing.Color.White
e.Row.Cells(3).BackColor = System.Drawing.Color.Green
e.Row.Cells(3).ForeColor = System.Drawing.Color.White
e.Row.Cells(4).BackColor = System.Drawing.Color.Green
e.Row.Cells(4).ForeColor = System.Drawing.Color.White
e.Row.Cells(5).BackColor = System.Drawing.Color.Green
e.Row.Cells(5).ForeColor = System.Drawing.Color.White
e.Row.Cells(6).BackColor = System.Drawing.Color.Green
e.Row.Cells(6).ForeColor = System.Drawing.Color.White
e.Row.Cells(7).BackColor = System.Drawing.Color.Green
e.Row.Cells(7).ForeColor = System.Drawing.Color.White
e.Row.Cells(8).BackColor = System.Drawing.Color.Green
e.Row.Cells(8).ForeColor = System.Drawing.Color.White
e.Row.Cells(9).BackColor = System.Drawing.Color.Green
e.Row.Cells(9).ForeColor = System.Drawing.Color.White
e.Row.Cells(10).BackColor = System.Drawing.Color.Green
e.Row.Cells(10).ForeColor = System.Drawing.Color.White
e.Row.Cells(11).BackColor = System.Drawing.Color.Green
e.Row.Cells(11).ForeColor = System.Drawing.Color.White
e.Row.Cells(12).BackColor = System.Drawing.Color.Green
e.Row.Cells(12).ForeColor = System.Drawing.Color.White
e.Row.Cells(13).BackColor = System.Drawing.Color.Green
e.Row.Cells(13).ForeColor = System.Drawing.Color.White
ElseIf Day(DateTime.Now) > 1 Then
e.Row.Cells(0).BackColor = System.Drawing.Color.Orange
e.Row.Cells(0).ForeColor = System.Drawing.Color.White
e.Row.Cells(1).BackColor = System.Drawing.Color.Orange
e.Row.Cells(1).ForeColor = System.Drawing.Color.White
e.Row.Cells(2).BackColor = System.Drawing.Color.Orange
e.Row.Cells(2).ForeColor = System.Drawing.Color.White
e.Row.Cells(3).BackColor = System.Drawing.Color.Orange
e.Row.Cells(3).ForeColor = System.Drawing.Color.White
e.Row.Cells(4).BackColor = System.Drawing.Color.Orange
e.Row.Cells(4).ForeColor = System.Drawing.Color.White
e.Row.Cells(5).BackColor = System.Drawing.Color.Orange
e.Row.Cells(5).ForeColor = System.Drawing.Color.White
e.Row.Cells(6).BackColor = System.Drawing.Color.Orange
e.Row.Cells(6).ForeColor = System.Drawing.Color.White
e.Row.Cells(7).BackColor = System.Drawing.Color.Orange
e.Row.Cells(7).ForeColor = System.Drawing.Color.White
e.Row.Cells(8).BackColor = System.Drawing.Color.Orange
e.Row.Cells(8).ForeColor = System.Drawing.Color.White
e.Row.Cells(9).BackColor = System.Drawing.Color.Orange
e.Row.Cells(9).ForeColor = System.Drawing.Color.White
e.Row.Cells(10).BackColor = System.Drawing.Color.Orange
e.Row.Cells(10).ForeColor = System.Drawing.Color.White
e.Row.Cells(11).BackColor = System.Drawing.Color.Orange
e.Row.Cells(11).ForeColor = System.Drawing.Color.White
e.Row.Cells(12).BackColor = System.Drawing.Color.Orange
e.Row.Cells(12).ForeColor = System.Drawing.Color.White
e.Row.Cells(13).BackColor = System.Drawing.Color.Orange
e.Row.Cells(13).ForeColor = System.Drawing.Color.White
End If
End If
Вы можете использовать код позади метода следующим образом:
Добавьте столбец шаблона в GridView следующим образом:
<asp:TemplateField HeaderText = "Due Date">
<ItemTemplate>
<asp:Label ID = "Label4" runat = "server" Text='<%# Eval("DueDate") %>'
Style='<%# GetColorStyles(0, Eval("DueDate"))%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
и используйте следующий метод для каждой ячейки:
Function GetColorStyles(ByVal cellindex As String, ByVal DueDate As DateTime) As String
Dim RES As String = "color:#000000" 'default color
If DueDate.Date = DateTime.Today Then
RES = "color:#00FF00"
ElseIf Day(DateTime.Now) > 1 Then
RES = "color:#FF0000;"
End If
Return RES
End Function
date.Now.addDays(7)
date.Now.addDays(-1)
вы только что отметили несвязанный ответ как ответ вместо моего?
Если вам нужно сделать так, чтобы вся строка была окрашена одинаково, то раскраска по ячейкам не требуется. Пожалуйста, используйте.
e.Row.BackColor = System.Drawing.Color.Green;
e.Row.ForeColor = System.Drawing.Color.White;
Спасибо за ваш опыт @Skaria Thomas, это сделало мой код более эффективным.
Спасибо, Тевин. Если это помогло вам, пожалуйста, проголосуйте за ответ, так как это будет мотивацией для меня.
Большое спасибо, это сработало в мою пользу @Devcon.