Asp.net
ASP.NET Ajax CalendarExtender 不會更新 SelectedDate 值
由於某種原因,正在處理的 ASP.NET 站點上的任何 CalendarExtenders 都不會更新。我已經檢查了所有明顯的地方(例如 AutoPostBack 和 AutoEventHandler)。問題是當我從日曆中選擇一個日期並將其發佈到表單時,正在擴展的 TextBox 正在更新,但日曆擴展器的日期根本沒有被更新(例如 SelectedDate 仍然與以前相同) . 我已經用Google搜尋了任何可能的解決方案,但都沒有奏效。
這是程式碼:
<%@ 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)。它根本沒有註冊更改。
有任何想法嗎?
謝謝, 洛根史密斯
(是否可以對問題進行格式化?)
在網際網路上搜尋了無數次之後,似乎沒有解決這個問題。一個解決方案(如果你想這樣稱呼它)可能是使用文本框的轉換手動分配 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 控制項應該足夠智能,可以自己完成此操作。