Изменить значение строки Gridview на основе текущей даты в asp.net С#

Я не могу решить это. Я хочу проверить, передана ли полученная дата (DateOfRecd) с текущей даты, тогда она должна быть красной.

Но я не могу. Помогите мне, пожалуйста. Мой код:

<asp:BoundField DataField="ItemTypeName" HeaderText="ItemTypeName" SortExpression="ItemTypeName" />
<asp:BoundField DataField="BrandName" HeaderText="BrandName" SortExpression="BrandName" />
<asp:BoundField DataField="ModelName" HeaderText="ModelName" SortExpression="ModelName" />
<asp:BoundField DataField="ItemSerial" HeaderText="ItemSerial" SortExpression="ItemSerial" />
<asp:BoundField DataField="DateOfRecd" HeaderText="DateOfRecd" DataFormatString="{0:dd-MMM-yy}" SortExpression="DateOfRecd" />

Мой код С#:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        string v_ExpiryDate = (string)DataBinder.Eval(e.Row.DataItem, "DateOfRecd");
        string Test = DateTime.Compare(DateTime.Now, Convert.ToDateTime(v_ExpiryDate)).ToString();
        if (Test == "0")
        {
            e.Row.BackColor = System.Drawing.Color.Red;
        }
        else
        {
            e.Row.BackColor = System.Drawing.Color.White;
        }
    }
}

person Forkan Akon    schedule 26.02.2018    source источник


Ответы (1)


Я очень сомневаюсь, что значение Test когда-либо будет равно 0. DateTime.Compare дает 3 возможных значения: -1, 0 и 1. Оно будет отрицательным, если T1 меньше, чем T2, и 1, если T1 больше, чем T2. Значение будет равно 0 только тогда, когда две даты совпадают, и это маловероятно, поскольку DateTime.Now дает вам время до секунды. Поэтому, если DateOfRecd не соответствует секунде в момент открытия страницы, строка GridView никогда не будет красной.

Я думаю, вам нужна только часть даты, а не часы и секунды. Так что используйте `DateTime.Now.Date'

string Test = DateTime.Compare(DateTime.Now.Date, Convert.ToDateTime(v_ExpiryDate)).ToString();

Или просто сравните даты напрямую.

if (DateTime.Now.Date > ExpiryDate)
{
    e.Row.BackColor = System.Drawing.Color.Red;
}
person VDWWD    schedule 26.02.2018