Я пытаюсь показать красный фон для просроченных элементов в моем gridview, но не могу использовать asp.net - PullRequest
0 голосов
/ 04 июня 2018

У меня есть gridview, который я привязываю к своему событию page_load.В этом столбце даты истечения срока, где я хочу показать красным цветом для тех, срок действия которых истекает через 30 дней.Ниже мой GridView1_RowDataBound код события:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    string ddmmyyyy = DateTime.Now.ToString("dd-MM-yyyy");
    DateTime nowDate = Convert.ToDateTime(ddmmyyyy);//DateTime.ParseExact(ddmmyyyy, "dd-MM-yyyy", null);
    DateTime TableDate = Convert.ToDateTime(e.Row.Cells[6].Text);
    if (e.Row.RowIndex >= 0)
    {
        if (TableDate <= nowDate.AddDays(-30))
        {
            e.Row.Cells[6].BackColor = Color.Red;
        }
    }
}

и вот скриншот вида сетки.image Это исключение о том, что the date time format is invalid.Пожалуйста, помогите мне решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Во-первых, ваш код сетки RowDataBound должен быть в следующих условиях.Тогда попробуйте следующий код:

if (e.Row.RowType == DataControlRowType.DataRow)
{
    string date = "30-05-2018"; //Cell value
    DateTime getdate = Convert.ToDateTime(date, System.Globalization.CultureInfo.GetCultureInfo("en-US").DateTimeFormat);
    DateTime CurrentDate = Convert.ToDateTime(DateTime.Now, System.Globalization.CultureInfo.GetCultureInfo("en-US").DateTimeFormat);

    if ((CurrentDate - getdate).TotalDays < 30)
    {
       e.Row.Cells[6].BackColor = System.Drawing.Color.Red;
    }
}  
0 голосов
/ 04 июня 2018

Попробуйте следующий код.

GridView1.RowDataBound += new GridViewRowEventHandler(GridView1_RowDataBound);

void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        int value = (int)DataBinder.Eval(e.Row.DataItem, e.Row.Cells[2].Text); 
        // e.Row.Cells[2] references the cell value you want to use
        if (value < 100)
        {
            e.Row.Cells[2].BackColor = Color.FromName("#c6efce");
        }
        if ((value >= 100) && (value < 500))
        {
            e.Row.Cells[2].BackColor = Color.FromName("#ffeb9c");
        }
        if (value >= 500)
        {
            e.Row.Cells[2].BackColor = Color.FromName("#ffc7ce");
        }
    }
}
...