Asp.net

ASP.NET Ajax CalendarExtender 不會更新 SelectedDate 值

  • May 31, 2020

由於某種原因,正在處理的 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 控制項應該足夠智能,可以自己完成此操作。

引用自:https://stackoverflow.com/questions/3621112