2011-09-22 54 views
1

我想添加一個Ajax CalendarExtender到我的頁面。然後選擇一個日期並點擊一個按鈕後,我會在標籤中看到選定的日期。Ajax CalendarExtender,點擊按鈕後如何獲取日期?

我有一個文本框,這是CalendarExtender

<asp:TextBox ID="DateText" runat="server" ReadOnly="true" ></asp:TextBox> 

<ajaxToolkit:CalendarExtender 
    ID="Calendar1" 
    runat="server" 
    TargetControlID="DateText" 
    Format="MMMM d, yyyy" 
    PopupPosition="Right" 
    /> 

<asp:Button runat="server" ID="Button1" onclick="Button1_Click" /> 

代碼背後的目標:

在我設定的日期爲今天的第一頁的負荷。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     Calendar1.SelectedDate = DateTime.Today; 
    } 
} 

Button1_Click事件

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Label1.Text = Calendar1.SelectedDate.Value.Day.ToString(); 
} 

問題是,當我點擊按鈕(或任何回發後)選擇的價值得到重新設置爲今天的日期。

如果我沒有在Page_Load其設置爲DateTime.Today它會馬上重新設置爲null,並拋出一個空例外。

我該如何解決這個問題?

非常感謝您的幫助。 我希望我是清楚的

回答

0

也許這將工作:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     if(!Calendar1.SelectedDate) 
      Calendar1.SelectedDate = DateTime.Today; 
    } 
} 
+0

謝謝您的答覆,但並沒有工作。即使在進入Page_Load事件之前,SelectedDate仍將重置爲Today's date – Youssef

0

解決的問題是利用的Request.Form集合。由於此集合具有發佈回服務器的所有字段的值,並且它具有使用JavaScript等客戶端腳本設置的值。

因此,我們需要對獲取價值服務器端的方式做一些小的改動。

C#

protected void Submit(object sender, EventArgs e) 
{ 
    string date = Request.Form[txtDate.UniqueID]; 
} 
相關問題