Использование настраиваемого средства форматирования даты в столбце связанных свойств Telerik MVC AJAX - PullRequest
4 голосов
/ 08 февраля 2012

Я использую последнюю версию Telerik MVC элементов управления в моем приложении ASP.NET MVC3 с razor.

Я определил свою структуру сетки следующим образом:

@(Html.Telerik()
     .Grid<GrantApplicationListViewModel>()
     .Name("grdGrantApplications")
     .Columns(column =>
     {
          column.Bound(x => x.FullName)
               .Title("Owner")
               .Width(200);

          column.Bound(x => x.CreatedDate)
               .Title("Created")
               .Width(90);
     })
     .DataBinding(dataBinding => dataBinding.Ajax().Select("AjaxGrantApplicationsBinding", "Home"))
     .Pageable(paging => paging.PageSize(30))
     .TableHtmlAttributes(new { @class = "telerik-grid" })
)

На мой взгляд модель выглядит так:

public class GrantApplicationListViewModel
{
     public int Id { get; set; }
     public string FirstName { get; set; }
     public string LastName { get; set; }
     public string FullName
     {
          get { return FirstName + " " + LastName; }
     }

     public DateTime CreatedDate { get; set; }
}

Я создал средство форматирования даты, которое я хотел бы использовать в своем столбце для форматирования даты:

public static class DateTimeExtensions
{
     public static string FormatDate(this DateTime instance)
     {
          return string.Format("{0:yyyy-MM-dd}", instance);
     }
}

Как бы я использовал этот метод форматирования в моем столбце для форматирования CreatedDate? Я попробовал следующее:

column.Bound(x => x.CreatedDate.FormatDate())
     .Title("Created")
     .Width(90);

.. и я получаю следующую ошибку:

Bound columns require a field or property access expression.

Ответы [ 2 ]

9 голосов
/ 08 февраля 2012

Вы должны привязать к свойству, так что то, что вы делаете, не будет работать.То, что вы МОЖЕТЕ сделать, это:

public class GrantApplicationListViewModel
{
     public int Id { get; set; }
     public string FirstName { get; set; }
     public string LastName { get; set; }
     public string FullName
     {
          get { return FirstName + " " + LastName; }
     }

     public DateTime CreatedDate { get; set; }
     public DateTime FormattedDate{ get{ return FormatDate(CreatedDate)}; set; }
}

А затем

column.Bound(x => x.FormattedDate)
 .Title("Created")
 .Width(90);

(Код неверный синтаксис, поэтому вы должны очистить его:))

вытакже может сделать

column.Bound(x => x.FormattedDate)
     .Title("Created")
     .Format("{0:MM/dd/yyyy hh:mm tt}")
     .Width(90);

Если я не ошибаюсь

2 голосов
/ 08 февраля 2012

Вы можете отформатировать дату в GrantApplicationListViewModel классе

public DateTime CreatedDate 
{
 get
 {
   return string.Format("{0:yyyy-MM-dd}", this);
 }
}

Это работает для меня. Или же вы можете использовать нижеуказанный способ

public DateTime CreatedDate 
    {
     get
     {
       return string.Format("{0:yyyy-MM-dd}", DateOfJoining);
     }    
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...