【问题标题】:ASP.NET Ajax CalendarExtender will not update SelectedDate valueASP.NET Ajax CalendarExtender 不会更新 SelectedDate 值
【发布时间】:2011-04-06 23:21:19
【问题描述】:

由于某种原因,正在处理的 ASP.NET 站点上的任何 CalendarExtenders 都不会更新。我已经检查了所有明显的地方(例如 AutoPostBack 和 AutoEventHandler)。问题是当我从日历中选择一个日期并将其发布到表单时,正在扩展的 TextBox 正在更新,但日历扩展器的日期根本没有被更新(例如 SelectedDate 仍然与以前相同) .我已经用谷歌搜索了任何可能的解决方案,但都没有奏效。

代码如下:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master"
    AutoEventWireup="true" CodeBehind="ThePage.aspx.cs" Inherits="ThePage" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<asp:TextBox runat="server" ID="txtBlah" />
<asp:CalendarExtender ID="txtBlahExtender" runat="server" TargetControlID="txtBlah" Format="MMMM d, yyyy" />
<asp:Button runat="server" ID="btnSubmit" CausesValidation="false" />

以及代码隐藏:

public partial class ThePage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                txtBlahExtender.SelectedDate = DateTime.Today.AddDays(4);
            }
        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
         //do postback actions        
        }
    }
}

当我的代码达到“执行回发操作”时,txtBlahExtender.SelectedDate 始终为 DateTime.Today.AddDays(4)。它根本不会注册更改。

有什么想法吗?

谢谢, 登录史密斯

(是否可以对问题进行格式化?)

【问题讨论】:

  • 我遇到了同样的问题

标签: asp.net ajax postback calendarextender


【解决方案1】:

在互联网上搜索了无数次后,似乎没有解决此问题的方法。一个解决方案(如果你想这样称呼它)可能是使用文本框的转换手动分配 SelectedDate (但这需要你在标记中设置格式):

if(IsPostBack) {
blahCalendarExtender.SelectedDate = DateTime.ParseExact(blah.Text, blahCalendarExtender.Format, null);
// do postback actions
} else {
// for instance, maybe initalize blahCalendarExtender to today
blahCalendarExtender.SelectedDate = DateTime.Today;
}

(其中 blah 是文本控件, blahCalendarExtender 是扩展 blah 的扩展器)

不过,calendarExtender 控件似乎应该足够智能,可以自行执行此操作。

【讨论】:

  • 我设置了 blahCalendarExtender.SelectedDate = null; 因此,如果用户在 blah.Text 中插入了一些不可解析的日期,我可以避免出现问题。用户最后选择的日期由视图状态自动填充。
【解决方案2】:

确保将 texbox 和扩展器放在 UpdatePanel 中(我在您提供的代码中没有看到这一点)。

【讨论】:

  • 更新 - 没用。添加 UpdatePanel 后,该值立即恢复,因此初始值并拒绝让我更改。
  • 我的已经在 updatePanel 中了,这没什么区别 :(
【解决方案3】:

我找到了一个非常奇怪的解决方案。

不要初始化附加了日历扩展器的文本框的值。保持文本框为空。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多