在日历扩展器上设置正确的日期 asp.net



我有一个简单的目标。我可以通过创建一个干净的项目来模拟问题。

问题是在动态设置文本框上的日期时,我无法正确设置 asp.net 日历扩展器显示日期(打开时(。

这是一个代码:

.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 加载页面

    2-单击文本框,打开日历扩展器。

    3 日历扩展器采用当前日期。

    4-单击2013

    按钮,文本框更新为2013日期。

    5-点击文本框,打开日历扩展器.....仍然有2014年(当前日期(

  • 场景 2

    1 加载页面2-单击2013按钮,文本框更新为2013日期。

    3-单击文本框,打开日历扩展器。

    4 日历扩展器假定为 2013 年(正确的日期(。

    5-单击2015

    按钮,文本框更新为2015日期。

    3-单击文本框,打开日历扩展器.....还有2013年(第一次约会(

  • 场景 3

    (与 2 相同,但从按钮 2015 单击开始(

  • 场景 4

    1 加载页面

    2-单击2013

    按钮,文本框更新为2013日期(不要单击文本框(。

    3-单击2015

    按钮,文本框更新为2015日期。

    4-单击文本框,打开日历扩展器.....假设2015年(最后日期(

注意:如果我动态显示当前设置的日期

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

,它是正确的。但是显示器根本无法刷新。

这是正确的行为吗?我错过了什么吗?

如何使其假定正确的日期?

好的,我做了更多的测试,发现可视化仅在回发发生时更新。

因为我试图避免回发.....我只是去jQuery日期选择器。

最新更新