【问题标题】:Set Datetimepicker date NaN设置 Datetimepicker 日期 NaN
【发布时间】:2016-07-19 12:22:22
【问题描述】:

我有一个 datetimepicker,并使用此代码在我的 SQLServer 中保存使用保存按钮选择的日期。出于某种原因,我需要一个可为空的 DateTime:

clienteAdd.DataLead = string.IsNullOrEmpty(form["dataLead"]) ? (DateTime?)null : DateTime.Parse(form["dataLead"]);

保存功能工作正常,问题是当我设置加载日期时间选择器时。我使用以下代码从 SQLServer 恢复数据:

var elemento = new{ dataLead = clienteLead.DataLead }

我从 JQuery 将“elemento”发送到视图并设置了 datetimepicker:

$('#dataLead').datepicker('setDate', (new Date(result.dataLead)));

当我设置“dataLead”时,我将 NaN 作为日期。我知道问题是日期时间的转换,但我不知道如何保存和加载这些数据。

谢谢大家

【问题讨论】:

  • 那么失败的result.dataLead 的值是多少?
  • null有什么意义?
  • 我想要 null 因为它不是强制性的。如何将这些数据传递给 result.datalead?
  • 我的问题更多,你为什么写(DateTime?)null而不是null

标签: c# jquery datetimepicker


【解决方案1】:

根据文档here,Javascript 的 Date 对象可以接收 milliseconds(一个数字)或 dateString。我的猜测是 result.dataLead 是一个对象,因为您 DataLead 是一个对象(c# DateTime)。这就是为什么你不能做你想做的任务。

答案here 解释了如何从DateTime 中获取millis。

试试下面的代码(未经测试):

var elemento = new{ dataLead = (long)clienteLead.DataLead.TotalMilliseconds }

然后进行常规分配:

$('#dataLead').datepicker('setDate', (new Date(result.dataLead)));

更新:

由于clientLead.DataLead 可以为空,您必须确保在执行(long)clienteLead.DataLead.TotalMilliseconds 时不会得到NullPointerException,并且可能考虑在javascript 中检查typeof result.dataLead != "undefined"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2017-12-24
    • 2016-09-06
    • 2011-07-11
    相关资源
    最近更新 更多