将 TemplateField 转换为 DateTime - 空白行

Posted

技术标签:

【中文标题】将 TemplateField 转换为 DateTime - 空白行【英文标题】:Convert TemplateField to DateTime - Blank Row 【发布时间】:2021-10-21 14:18:38 【问题描述】:

即使单元格中存在日期,所有日期都将变为空。这是来自 gridview 模板字段。我正在尝试转换那些不为空的单元格,但它们都是空的。

 asp:Label ID="Label13" runat="server" Text='<%# Eval("assigned_date") != null ? "" : Convert.ToDateTime(Eval("assigned_date")).ToString("MM/dd/yyyy")  %>'></asp:Label>

【问题讨论】:

【参考方案1】:

通过检查 DBNull 而不是 null 使其工作

那个?那么意味着 The : 意味着其他

Text='<%# Eval("assigned_date") != DBNull.Value ? Convert.ToDateTime(Eval("assigned_date")).ToString("MM/dd/yyyy") : ""

【讨论】:

【参考方案2】:

最好在后面的代码上创建一个函数并调用该函数 - 避免内联 Eval。所以代码将是:

<asp:Label ID="Label13" runat="server" Text='<%# getDateTimeIfExist(Container.DataItem)%>'></asp:Label>

以及背后的代码

protected string getDateTimeIfExist(object oItem)

        var DateTimeToRender = DataBinder.Eval(oItem, "assigned_date") as DateTime?;

        if (DateTimeToRender != null)
            return DateTimeToRender.GetValueOrDefault().ToString("MM/dd/yyyy");
        else
            return string.Empty;

【讨论】:

还是空白 逐步调试它以查看原因 - 它可能不是 null,但 DBNull - 否则你输入错误 - 可能是“assigned_date” - 检查那里返回的内容,进行一些测试 我已经解决了并在此处添加了答案。不过还是谢谢。

以上是关于将 TemplateField 转换为 DateTime - 空白行的主要内容,如果未能解决你的问题,请参考以下文章

gridview编辑模板中没有itemtemplate

如何将 Timestamp 转换为 Date 或 DateTime 对象?

如何居中对齐 TemplateField 的标题文本?

将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围

使用 pandas python 将字符串日期转换为列中所有值的数字

Gridview 中 TemplateField 中的复选框在回发时丢失