powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / GridView
15 сообщений из 15, страница 1 из 1
GridView
    #37525436
alexay_1985
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, что не так делаю? Мне нужно в гриде сравнить значения ячеек столбца с текущей датой, если значение(дата) выходит за рамки текущей даты, то нужно покрасить строку в гриде красным цветом.
Делаю так:

protected void GridView1_DataBound(object sender, EventArgs e)
{

for (int i = 0; i < GridView1.Rows.Count; ++i)
{

GridViewRow tmp1 = GridView1.Rows[i];
string dtText = System.Text.RegularExpressions.Regex.Replace(GridView1.Rows[i].Cells[4].Text, "(\\d+)\\.(\\d+)\\.(\\d+)", "$3-$2-$1");

if (DateTime.Parse(dtText) < DateTime.Now.Date)
tmp1.Style.Add("background-color", "Red");


}


если вывести значение заполненого грида:

Response.Write(tmp1.Cells[4].Text);

то он выводит пустоту, хотя грид заполнен датами, в чем причина понять не могу((
...
Рейтинг: 0 / 0
GridView
    #37525452
alexay_1985
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно и вот так, но смысл не меняется:

for (int i = 0; i < GridView1.Rows.Count; ++i)
{

GridViewRow tmp1 = GridView1.Rows[i];

if (DateTime.Parse(tmp1.Cells[4].Text) < DateTime.Now.Date)

tmp1.Style.Add("background-color", "Red");


}
...
Рейтинг: 0 / 0
GridView
    #37525471
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
GridView
    #37525489
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может вообще на стороне БД это сделать ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CASe 
 WHEN Date <> GETDATE() then  1  else  0 
End as Bool


/*или так если время используется*/
CASe 
 WHEN CAST(CAST(CAST(CAST(Date  AS binary( 8 )) AS binary( 4 )) AS binary( 8 )) AS datetime) <> GETDATE() then  1  else  0 
End as Bool

...
Рейтинг: 0 / 0
GridView
    #37525618
Starlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306,

У вас в чем проблемы - с покраской или с получением условий? Если убрать все условия, в красный цвет красит?
...
Рейтинг: 0 / 0
GridView
    #37526689
alexay_1985
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема с самим условием, мне нужно чтобы оно срабатывало и соответственно красило строки по условию, а то что без условия работает я и так знаю
...
Рейтинг: 0 / 0
GridView
    #37526719
Starlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexay_1985,

То что посоветовал Паганель через RowDataBound действительно самое оптимальное. Если связываете grisview через коллекцию своих объектов, то e.Row.DataItem - это объект, приводите его к объекту в вытягиваете дату.
...
Рейтинг: 0 / 0
GridView
    #37526894
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы по ссылке ходили? Пример видели?
...
Рейтинг: 0 / 0
GridView
    #37527228
alexay_1985
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да видел пример, только пока не разберусь, как могу приминить DataItem в моем случае, пробовал писать следующее и всеравно не чего не выводит:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowState == DataControlRowState.Edit)
{
DataRowView rowView = (DataRowView)e.Row.DataItem;

String dateEnd = rowView["dateEnd"].ToString();

Response.Write(dateEnd);// для наглядности

}


}
Подскажите как быть, может неправильно делаю что то?
...
Рейтинг: 0 / 0
GridView
    #37527245
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите под дебагом на rowView["dateEnd"]
Что там за значение и какого типа?
...
Рейтинг: 0 / 0
GridView
    #37527257
Starlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexay_1985,

Условие
Код: plaintext
if (e.Row.RowState == DataControlRowState.Edit)
имхо не нужно, при выводе таких строк нет. Нужно просто проверить на DataRow, чтоб шапка не попалась.
...
Рейтинг: 0 / 0
GridView
    #37527279
alexay_1985
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понимаю вы имели в виду с помощью точки останова проверить какое значение приходит, я проверил туда приходит Null, хотя грид забит данными
...
Рейтинг: 0 / 0
GridView
    #37538731
rumka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
народ прав,обработку лучше перенести в запрос,а при биндинге строки обрабатывать результат,что-то типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
   protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                     if (DataBinder.Eval(row.DataItem, "имя поля").ToString() != "")
                    {

                            e.Row.ForeColor = System.Drawing.Color.Red;
                     }
             }
        }

...
Рейтинг: 0 / 0
GridView
    #37584322
alexay_1985
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ругаеться на строчку: if (DataBinder.Eval(row.DataItem, "имя поля").ToString() != "") компонент row, пишет что отсутствует в текущем контексте, может using кокогото не хватает или в чем еще может быть дело, как переменную мы же ее не объявляем?
...
Рейтинг: 0 / 0
GridView
    #37586163
alexay_1985
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь, вот рабочий вариант:

if (e.Row == null) return;
if (e.Row.DataItem == null) return;

DataRowView rowView = (DataRowView)e.Row.DataItem;
if (rowView["dateEnd"] == null) return;
String dateEnd = rowView["dateEnd"].ToString();
if (DateTime.Parse(dateEnd) < DateTime.Now.Date)
e.Row.Style.Add("background-color", "#F34E4E");
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / GridView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]