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

时间:2014-12-19 11:39:05

标签: javascript asp.net calendarextender

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

问题是我在动态设置文本框上的日期时无法正确设置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-calendar extender假设当前日期。

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

    文本框上的5-cick,打开日历扩展器.....仍然有2014年(当前日期)

  • 情景2

    1次加载页面 双击2013按钮,文本框更新为2013日期。

    点击文本框,打开日历扩展程序。

    4日历扩展程序假定为2013(正确日期)。

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

    点击文本框,打开日历扩展器.....仍然有2013年(第一次约会)

  • 情景3

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

  • 情景4

    1次加载页面

    双击2013按钮,文本框更新为2013日期(请勿单击文本框)。

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

    点击文本框,打开日历扩展器.....假设2015(上次日期)

注意:如果我用

动态显示当前设定日期
alert($find("calendarExtender").get_selectedDate());

,这是正确的。但显示器根本不会刷新。

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

如何让它假设正确的日期?

1 个答案:

答案 0 :(得分:0)

好的,我做了一些测试,发现只有在回发后才会更新可视化。

因为我试图避免回帖.....我只是去找jquery datepicker。