【问题标题】:ASP.NET Can't set value to datepicker from code behindASP.NET 无法从后面的代码中为 datepicker 设置值
【发布时间】:2015-04-28 00:03:41
【问题描述】:

我有一个日期选择器字段

$(function () {
        $("#dateTextBox").datepicker({
            changeMonth: true,
            changeYear: true
        });

        $("#dateTextBox").datepicker("option", "dateFormat", "dd/mm/yy");
});

在后面的代码中,单击按钮时,我正在尝试为 datepicker 字段设置值:

dateTextBox.Value = date.ToString("dd/MM/yyyy");

但是回发后,文本框是空的...

【问题讨论】:

  • 尝试在日期选择器插件上设置与服务器端dd/MM/yyyy相同的日期时间格式
  • 刚试过,不行。
  • 如果你从选择器中选择了一个日期,它有什么格式?也许你需要设置文化,默认的美国是 MM/dd/yyyy
  • 我从 datepicker 字段读取没有问题,但是设置它...格式设置为 $("#dateTextBox").datepicker("option", "dateFormat", "dd/毫米/年");

标签: c# jquery asp.net datepicker setvalue


【解决方案1】:

为了实现这一点,您需要使用隐藏字段从客户端读取详细信息。这个隐藏域的值可以在服务器端设置。

例如:

在页面上创建隐藏字段

<asp:HiddenField id="hdnDate" runat="server" />

在 hiddenField 中设置日期字符串:

protected void button_Clicked (...)
{
     DateTime dt = DateTime.Now;
     hdnDate.Value = dt.Year.ToString() + "," + (dt.Month - 1 ).ToString() + "," + dt.Day.ToString();
}

现在,在 jquery 事件的 document.ready 上,执行此操作

$(document).ready(function() {
 $("#dateTextBox").datepicker({
        changeMonth: true,
        changeYear: true
    });

  dtString = $("#<%=hdnDate.ClientID%>").val();
  dtString = dtString.split(',');
  var defaultDate = new Date(dtString[0], dtString[1], dtString[2]);
  $("#dateTextBox").datepicker("setDate",defaultDate);

});

【讨论】:

  • 我会尽快尝试的,但你能解释一下为什么这是一个如此复杂的过程吗?
  • 您正在使用的日期选择器控件是一个 javascript 控件。在 ASP.net 网页生命周期中,后面的代码首先运行,然后执行 HTML / javascript 部分。您的日期选择器控件正在 HTML 部分中生成。因此您无法为尚未生成的控件设置值。
  • 有效,但将我的月份增加 1... 有什么线索吗?
  • 您是否尝试过调试代码并检查 HiddenField 中存储的值?月份是由后面的代码还是脚本增加的?
  • datepicker("setDate") 正在递增
【解决方案2】:

试试这个:

dateTextBox.Value = DateTime.Now.ToString("yyyy-MM-dd");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-26
    • 2016-07-06
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多