Как раскрасить Gridview на основе значений даты

Я хотел бы разрешить моему элементу управления 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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
91
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете использовать код позади метода следующим образом:

Добавьте столбец шаблона в 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
Ответ принят как подходящий
  1. Используйте цикл for от 0 до 13 и удалите повторения или раскрасьте весь ряд.
  2. чтобы получить дату, которая на 7 дней позже, и проверить, если раньше, сравните с date.Now.addDays(7)
  3. чтобы проверить, прошел ли день, используйте date.Now.addDays(-1)

Большое спасибо, это сработало в мою пользу @Devcon.

Tevin 31.05.2019 13:07

вы только что отметили несвязанный ответ как ответ вместо моего?

OctaCode 31.05.2019 13:24

Если вам нужно сделать так, чтобы вся строка была окрашена одинаково, то раскраска по ячейкам не требуется. Пожалуйста, используйте.

   e.Row.BackColor = System.Drawing.Color.Green;
   e.Row.ForeColor = System.Drawing.Color.White;

Спасибо за ваш опыт @Skaria Thomas, это сделало мой код более эффективным.

Tevin 31.05.2019 13:09

Спасибо, Тевин. Если это помогло вам, пожалуйста, проголосуйте за ответ, так как это будет мотивацией для меня.

Skaria Thomas 31.05.2019 14:09

Другие вопросы по теме