ASP.NET 3.5 Поле шаблона GridView Отображение даты, если не MinValue? - PullRequest
0 голосов
/ 30 июля 2010

У меня довольно простая проблема с ASP.NET. У меня есть вид сетки с полем шаблона. В поле шаблона у меня есть метка. Я пытаюсь установить для свойства текста меток дату, указанную в связанном столбце , если значение datetime не является значением min (другими словами, поле даты и времени не было установлено) . Я действительно не уверен, как это сделать. Ниже приведен код, который я пробовал, чтобы быть более понятным в том, что я пытаюсь выполнить:

        <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.

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

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

Ответы [ 2 ]

1 голос
/ 22 мая 2011

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

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

1 голос
/ 30 июля 2010

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

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

Думаю, я подходил к проблеме с неправильной стороны ...

...