处理gridview中的null datetime

本文关键字:datetime null 中的 gridview 处理 | 更新日期: 2023-09-27 18:03:39

我在c# asp.net Web 4.5框架中有一个gridview,它工作得很好,直到一个空值传递给我正在格式化为日期的字段。

这是我的模板字段
<asp:templatefield>
    <HeaderTemplate>
        <asp:Label ID="lblHeadEmailFirstSendDate" runat="server" Text="1st Email<br />Target Date"></asp:Label>
    </HeaderTemplate>
    <ItemTemplate>
        <asp:Label ID="lblEmailFirstSendDate" runat="server" Text='<%#  Convert.ToDateTime(Eval("EmailTargetFirstSendDate")).ToString("MM/dd/yyyy")%>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:Label runat="server"  ID="txtEmailFirstSendDate" Text='<%#Convert.ToDateTime(Eval("EmailTargetFirstSendDate")).ToString("MM/dd/yyyy")%>'></asp:Label>
    </EditItemTemplate>
</asp:templatefield>

我已经搜索了高和低找到一个解决方案,既允许我格式化日期,又不会在日期为空时产生异常。

处理gridview中的null datetime

给你:

<%#  Eval("EmailTargetFirstSendDate") != null ? Convert.ToDateTime(Eval("EmailTargetFirstSendDate")).ToString("MM/dd/yyyy") : "No Date" %>

OK…我找到了一个很好的解决方案(张贴后几乎立即)感谢MaxOvrdr的回答,但我不能让它工作。我把功劳归于斯坦,因为他把我推到了正确的方向。

我在后面添加了代码:

    protected string GetDate(object  strDt)
    {
        DateTime dt1;
        if (DateTime.TryParse(strDt.ToString(), out dt1))
        {
            return dt1.ToString("MM/dd/yyyy");
        }
        else
        {
            return "";
        }

    }`

并将模板文本字段修改为:

<asp:TemplateField > <HeaderTemplate> <asp:Label ID="lblHeadEmailFirstSendDate" runat="server" Text="1st Email<br />Target Date"></asp:Label> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblEmailFirstSendDate" runat="server" Text='<%# GetDate(Eval("EmailTargetFirstSendDate"))%>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:Label runat="server" ID="txtEmailFirstSendDate" Text='<%# GetDate(Eval("EmailTargetFirstSendDate"))%>'></asp:Label> </EditItemTemplate> </asp:TemplateField>

和魔术一样……它的工作原理!谢谢大家。

使用DateTime?类型这将允许您为它分配null

添加问号将其转换为可空类型

绑定后面代码中的数据?RowDataBound事件