【问题标题】:Convert TemplateField to DateTime - Blank Row将 TemplateField 转换为 DateTime - 空白行
【发布时间】: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>

【问题讨论】:

    标签: c# asp.net date gridview templatefield


    【解决方案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” - 检查那里返回的内容,进行一些测试
      • 我已经解决了并在此处添加了答案。不过还是谢谢。
      猜你喜欢
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多