ASP.NET Ajax CalendarExtender не будет обновлять значение SelectedDate - PullRequest
9 голосов
/ 01 сентября 2010

По какой-то причине любые CalendarExtenders на работающем сайте ASP.NET не будут обновлены.Я уже проверил все очевидные места (такие как AutoPostBack и AutoEventHandler).Проблема заключается в том, что когда я выбираю дату в Календаре и публикую ее в форме, расширяемый TextBox обновляется, но дата расширителя календаря просто не обновляется (например, 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).Это просто не регистрирует изменение.

Есть идеи?

Спасибо, Логейн Смит

(Возможно ли форматирование по вопросу?)

Ответы [ 3 ]

15 голосов
/ 17 ноября 2010

После поиска в Интернете бесчисленное количество раз, похоже, нет решения этой проблемы.Решение (если вы хотите это так называть) может заключаться в том, чтобы вручную назначать 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 Control и blahCalendarExtender - это расширитель, расширяющий бла)

Кажется, что элемент управления calendarExtender должен быть достаточно интеллектуальным, чтобы делать это самостоятельно.

0 голосов
/ 05 апреля 2017

Я нашел очень странное решение для этого.

Не инициализируйте значение для текстового поля, к которому прикреплен расширитель календаря.Оставьте текстовое поле пустым.

0 голосов
/ 01 сентября 2010

Не забудьте поместить texbox и экстендер в UpdatePanel (я не вижу этого в предоставленном вами коде).

...