#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. Мне просто нужно сделать это как одноразовую вещь. Так что не реализовывайте вышеуказанную вещь. Однако спасибо за совет.