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