2010-07-29 2 views
0

У меня довольно простая проблема с ASP.NET. У меня есть сетка с полем шаблона. В поле шаблона у меня есть метка. Я пытаюсь установить свойство текста меток на дату, указанную в столбце привязки , если значение datetime не является минимальным значением (другими словами, поле времени даты не было установлено). Я действительно не уверен, как это сделать. Я дал некоторый код, я попытался ниже, чтобы быть более ясным в том, что я пытаюсь выполнить:ASP.NET 3.5 GridView Шаблон Поле Дата отображения Если не MinValue?

 <asp:TemplateField HeaderText="Start Date"> 
      <ItemTemplate> 
       <asp:Label ID="startDateLabel" runat="server" 
        Text='<%# if (Eval("StartDate") == DateTime.MinValue) { "None" } else { Eval("StartDate") } %>'> 
       </asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 

Вот код для моего источника данных объекта по запросу:

<asp:ObjectDataSource ID="projectDataSource" runat="server" 
    SelectMethod="GetProjects" TypeName="Lemur.Services.Impl.ProjectService"> 
</asp:ObjectDataSource> 

Вот класс, который возвращается из источника данных объекта:

public class Project 
{ 
    #region Private Fields 

    private Client _client; 

    #endregion 

    #region Public Properties 

    public Guid ID { get; set; } 
    public string Name { get; set; } 
    public string Abbreviation { get; set; } 
    public string Description { get; set; } 
    public Guid ClientID { get; set; } 
    public Client Client 
    { 
     get 
     { 
      if (_client == null) 
      { 
       _client = new Client(); 
      } 

      return _client; 
     } 
     set 
     { 
      _client = value; 
     } 
    } 
    public ProjectStatus ProjectStatus { get; set; } 
    public Employee ProjectManager { get; set; } 
    public Guid ProjectManagerID { get; set; } 
    public bool Active { get; set; } 
    public DateTime StartDate { get; set; } 
    public DateTime EndDate { get; set; } 

    #endregion 

    #region Overrides 

    public override string ToString() 
    { 
     return Name; 
    } 

    #endregion 
} 

поле Я пытаюсь получить это StartDate.

У кого-нибудь есть идеи о том, как это сделать?

Спасибо за любую помощь.

+0

К чему вы клоните? Это может быть проще сделать в источнике данных, а не в GridView. –

+0

Я привязываюсь к источнику данных объекта. –

+0

Не могли бы вы разместить код для объекта ObjectDataSource? –

ответ

1

После обновления моего сообщения с кодом класса Project я понял, что попытка интегрировать оператор if в TemplateField казалась неаккуратной. Я решил добавить свойство в класс Project, называемый StartDateString, который содержит логику, которую я хотел выполнить на уровне представления. Таким образом, я могу просто создать Bound поле свойству StartDateString:

public string StartDateString 
    { 
     get 
     { 
      if (StartDate == DateTime.MinValue) 
      { 
       return ""; 
      } 
      else 
      { 
       return StartDate.ToString("dd/MM/yyyy"); 
      } 
     } 
    } 

Guess я подходил к проблеме с неправильным направления ....

+1

Это именно то, что я собирался предложить. +1. –

1

Я понимаю, что этот пост старый, но я только что та же проблема (делали это в прошлом, но я забыл, как ее решить). Решение, найденное в другом месте, может быть полезным для других, ищущих то же самое. Во всяком случае ....

Используйте нулевой тип DataTime в своем классе. "DateTime?" вместо «DateTime»

Смежные вопросы