2010-09-01 69 views
9

出於某種原因,正在處理的ASP.NET網站上的任何CalendarExtender都不會更新。我已經檢查了所有顯而易見的地方(例如AutoPostBack和AutoEventHandler)。問題是,當我從日曆中選擇一個日期並將其發佈到表單時,正在更新的文本框被更新,但日曆擴展器的日期根本沒有被更新(例如,SelectedDate仍然和以前一樣) 。我已經搜索了任何可能的解決方案,但都沒有工作。ASP.NET Ajax CalendarExtender不會更新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) 。它根本不記錄更改。

任何想法?

感謝, Logain史密斯

(是否有可能做一個問題格式化?)

+0

我遇到了同樣的問題 – Starwfanatic 2010-09-22 19:19:34

回答

15

無數次搜索互聯網後,似乎沒有解決這個問題。溶液(如果你要稱呼它)可能是使用從文本框轉換手動分配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; 
} 

(在哪裏等等是Text控制和blahCalendarExtender是擴展延長無)

看來,calendarExtender控件應該足夠智能,以自己做到這一點,雖然。

+0

+1非常有用的修復。 – 2010-12-15 12:57:02

+1

我設置了** blahCalendarExtender.SelectedDate = null; **所以如果用戶在** blah.Text **中插入了一些不可分析的日期,我就避免了問題。用戶最後選擇的日期由視圖狀態自動填充。 – Ephedra 2014-07-17 09:47:06

0

確保把texbox和擴展在一個UpdatePanel(我沒有看到這個代碼你提供)。

+0

更新 - 沒有工作。在添加UpdatePanel後,該值立即恢復,所以初始值並拒絕讓我改變。 – logain 2010-09-01 19:41:58

0

我發現了一個非常奇怪的解決方案。

不要初始化附有日曆擴展程序的文本框的值。保持文本框空白。