Gridview — Манипулирование элементом данных в TemplateField

#c# #asp.net #gridview #templatefield

#c# #asp.net #gridview #templatefield

Вопрос:

Я отображаю четыре поля данных в одном столбце сетки, используя поле шаблона. Одним из полей данных является поле даты. Вместо отображения обычной даты я хочу отображать относительные часы / дни. (примерно: 2 часа назад / 2 дня назад). Как я могу манипулировать полем даты внутри столбца поля шаблона. Пожалуйста, предложите.

Спасибо.

Ответ №1:

Вы можете использовать <%# Eval(«Поле даты») %> для манипулирования данными, которые привязаны к столбцу во время выполнения. Вы даже можете вызывать функции в своем коде, выполнив что-то вроде этого:

 <%# this.MyFunction(Eval("Date Field Name")) %>
  

Возможно, есть лучший способ сделать это, но у меня это работало в прошлом. Обратите внимание, что Eval возвращает object .

Ответ №2:

Если другие представления / страницы будут использовать этот формат, возможно, вам захочется подумать о размещении этого на уровне бизнес-сервиса или какой-либо служебной функции, чтобы это не было скрыто / дублировано в пользовательском интерфейсе.

 // Business Service
public IList<Person> GetAllActivePeople()
{
 var people = _yourDataRepository.FindActive();
 foreach(var p in people)
 {
  p.MyRelativeDateField = ConvertToRelativeHoursDays(p.MyDateField);
 }
 return people;
}

// probably better as a utility class if other dates of other objects can use this...
private string ConvertToRelativeHoursDays(DateTime someDate)
{
    // implement formatting here
}
  

Комментарии:

1. Мне просто нужно сделать это как одноразовую вещь. Так что не реализовывайте вышеуказанную вещь. Однако спасибо за совет.