开发者

Ajax CalendarExtender, How to get the date after i click on a button?

I want to add add an Ajax CalendarExtender to my page. And then after selecting a date and clicking on a button I get the selected Day in a label.

I have a text box which is the target of the 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" />

In the Code Behind:

On the first page load I set the date to Today.

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

In the Button1_Click Event

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

The problem is when I click the button (or after any post backs) the value selected get reset to Today's date.

And if I don't set it to DateTime.Today in the Page_Load It get reset to null and throw a null excepti开发者_如何学运维on.

How can I solve this?

Thank you very much for any help. I hope i was clear


Maybe this will work:

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


The solution to the issue is making use of Request.Form collections. As this collection has values of all fields that are posted back to the server and also it has the values that are set using client side scripts like JavaScript.

Thus we need to do a small change in the way we are fetching the value server side.

C#

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜