我有一個簡單的目標。我可以通過創建一個乾淨的項目來模擬這個問題。在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依序按一下,打開日曆劑.....仍然具有2014(當前日期)
方案2
2013上的按鈕1-負載 第2頁單擊,文本框更新至2013年的日期。
3單擊文本框,打開日曆擴展程序。
4日曆擴展器假定爲2013(正確日期)。
5按一下2015按鈕,文本框更新到2015年的日期。
3-點擊文本框,打開日曆劑.....仍然具有2013(第一日)
SCENARIO 3
(同2,但與按鈕2015開始點擊)
SCENARIO 4
1-負載頁
2-點擊按鈕2013,文本框被更新爲2013的日期(DOñ OT點擊文本框)。
3按2015按鈕,文本框更新至2015年的日期。
4,點擊文本框,打開日曆擴展程序.....假設2015年(最後一天)
注意:如果我
alert($find("calendarExtender").get_selectedDate());
,其正確的動態顯示當前設定的日期。但顯示屏不會刷新。
這是正確的行爲嗎?我錯過了什麼嗎?
我該如何讓它假設正確的日期?