Установка правильной даты в расширителе календаря asp.net

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

Проблема в том, что я не могу правильно установить дату отображения asp.net calendarExtender (при открытии) при динамической установке даты в текстовом поле.

Вот код:

HTML:

<asp:Button 
    ID="Button1" 
    runat="server" 
    Text="2013" 
    OnClientClick="SetDate(0);return false;" />

<asp:Button 
    ID="Button2" 
    runat="server" 
    Text="2015" 
    OnClientClick="SetDate(1);return false;" />

<br />

<asp:TextBox 
    runat="server" 
    ID="tbDate"></asp:TextBox>

<asp:CalendarExtender 
    ID="clDate" 
    runat="server" 
    Enabled="True" 
    BehaviorID="calendarExtender"
    TargetControlID="tbDate">
</asp:CalendarExtender>

JavaScript:

var Data = (function () {
    var _items = [{ ID: 1, Date: "19/12/2013" },
                    { ID: 2, Date: "19/12/2015" }];

    function _GetAll() {                                        
        return _items;
    }

    function _GetByID(itemID) {
        var o = $.grep(_items, function (el, i) {
            return el.ID === itemID;
        });

        return o[0];
    }

    return {
        GetByID: _GetByID,
        GetAll: _GetAll
    }
})();

function SetDate(itemID) {

    var item = Data.GetByID(itemID);

    var stringDate = item.Date;
    var objectDate = Date.parseLocale(item.Date, "dd/MM/yyyy");

    $("#tbDate").val(stringDate);

    $find("calendarExtender").set_selectedDate(objectDate);

}

Это должно быть настолько просто, насколько возможно, но контрольные швы должны иметь свое собственное поведение. Из того, что я делаю вывод, дата отображения (при открытии) всегда предполагает последнюю выбранную дату. Не важно, что вы делаете.

Некоторые сценарии:

  • СЦЕНАРИЙ 1

    1-загрузочная страница

    Дважды щелкните текстовое поле, чтобы открыть расширитель календаря.

    3-календарный расширитель предполагает текущую дату.

    4-щелкните кнопку 2013, текстовое поле будет обновлено до даты 2013 года.

    5-щелчок по текстовому полю, открытие календаря расширитель ..... все еще есть 2014 (текущая дата)

  • СЦЕНАРИЙ 2

    1-загрузка страницы 2-кратным нажатием на кнопку 2013 года текстовое поле обновлено до даты 2013 года.

    3-щелкните текстовое поле, чтобы открыть календарь.

    4-календарный расширитель предполагает 2013 год (правильная дата).

    5-щелкните кнопку 2015 года, текстовое поле обновится до даты 2015 года.

    3-щелкните текстовое поле, чтобы открыть расширитель календаря ..... все еще есть 2013 год (первая дата)

  • СЦЕНАРИЙ 3

    (то же, что и 2, но начиная с нажатия кнопки 2015)

  • СЦЕНАРИЙ 4

    1-загрузочная страница

    Дважды щелкните кнопку 2013 г., текстовое поле будет обновлено до даты 2013 г. (НЕ НАЖИМАЙТЕ НА ТЕКСТОВОЕ ОКНО).

    3-щелкните кнопку 2015 года, текстовое поле обновится до даты 2015 года.

    4-щелкните текстовое поле, чтобы открыть расширитель календаря ... Предполагается, что 2015 год (последняя дата)

ПРИМЕЧАНИЕ: если я отображаю текущую установленную дату динамически с

alert($find("calendarExtender").get_selectedDate());

, это правильно. Но дисплей просто не обновляется.

Это правильное поведение? Я что-то упускаю?

Как я могу заставить его предполагать правильную дату?


person rpcm    schedule 19.12.2014    source источник


Ответы (1)


Хорошо, я провел еще немного тестирования и обнаружил, что визуализация обновляется только тогда, когда происходит обратная публикация.

Так как я пытался избежать обратной связи ..... я просто пойду для jquery datepicker.

person rpcm    schedule 22.12.2014