将 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 - 空白行的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Timestamp 转换为 Date 或 DateTime 对象?
将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围