【问题标题】:Setting correct date on asp.net calendar extender在 asp.net 日历扩展器上设置正确的日期
【发布时间】:2014-12-19 11:39:05
【问题描述】:

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

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

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

    在文本框上点击 5 次,打开日历扩展器.....仍然是 2014(当前日期)

  • 场景 2

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

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

    4 日历延长器假定为 2013 年(正确日期)。

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

    3-点击文本框,打开日历扩展器.....仍然有 2013(第一个日期)

  • 场景 3

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

  • 场景 4

    1-加载页面

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

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

    在文本框上单击 4 次,打开日历扩展器.....假设 2015(最后日期)

注意:如果我使用

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

,没错。但是显示根本不会刷新。

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

我怎样才能让它假设正确的日期?

【问题讨论】:

    标签: javascript asp.net calendarextender


    【解决方案1】:

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

    因为我试图避免回发......我只好使用 jquery datepicker。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多