2014-12-19 8 views
0

У меня есть простая цель. Я могу имитировать проблему, создав чистый проект.Установка правильной даты на расширителе календаря 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); 

} 

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

Некоторые scenarious:

  • СЦЕНАРИЙ 1

    1-загрузилась страница

    2-нажмите на текстовое поле, открыв календарь расширителя.

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

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

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

  • СЦЕНАРИЙ 2

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

    3 раза щелкните текстовое поле, открыв расширитель календаря.

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

    5-кнопочная кнопка 2015 года, текстовое поле обновляется до 2015 года.

    3 нажмите на текстовое поле, открыв календарь расширитель ..... до сих пор 2013 (первая дата)

  • СЦЕНАРИЙ 3

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

  • СЦЕНАРИЙ 4

    1-загрузилась страница

    2-нажмите на кнопку 2013, текстовое поле обновляется до даты 2013 года (DO N OT CLICK ON TEXT BOX).

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

    4 раза щелкните по текстовому полю, открыв расширитель календаря .....предполагает 2015 (последняя дата)

Примечание: если отобразить текущую дату набора динамически

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

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

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

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

ответ

0

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

С тех пор как я пытался избегать почтовых сообщений ..... плохо, просто пойдите для jquery datepicker.

 Смежные вопросы

  • Нет связанных вопросов^_^