【问题标题】:Popup a CalendarBehavior from Javascript从 Javascript 中弹出一个 CalendarBehavior
【发布时间】:2009-09-17 07:40:26
【问题描述】:

如何在页面中嵌入 CalendarBehavior 所需的所有脚本,而不实际使用服务器端控件 (CalendarExtender)。我不能使用服务器端扩展器的原因是我的页面可能包含数百个日期控件;我希望能够根据需要延迟加载日历(当用户单击控件时)。

从 javascript 创建日历的代码如下:

cal = $create(AjaxControlToolkit.CalendarBehavior,
  { 'id': owner.id + '_calendar', 'cssClass': 'calExt', 'format': format }, 
  null, null, owner);

问题是,如果没有从AjaxControlToolkit资源中包含所有需要的js,它会抛出错误:

AjaxControlToolkit is undefined.

非常感谢,

弗洛林 S.

【问题讨论】:

    标签: asp.net ajaxcontroltoolkit calendarextender


    【解决方案1】:

    我发现以下 hack 将注册 CalendarExtender 公开的所有脚本和 css 引用。我认为该解决方案是通用的,因此可以与其他扩展器一起使用:

    ScriptManager manager = ScriptManager.GetCurrent(Page);
    if (manager != null)
    {
      foreach (ScriptReference reference in ScriptObjectBuilder.GetScriptReferences(typeof(CalendarExtender)))
      {
        manager.Scripts.Add(reference);
      }
      CalendarExtender extender = new CalendarExtender();
      Page.Form.Controls.Add(extender);
      ScriptObjectBuilder.RegisterCssReferences(extender);
      Page.Form.Controls.Remove(extender);
    }
    

    RegisterCssReferences调用需要临时扩展器实例,否则会抛出错误。

    它有效,但是 YMMV。

    【讨论】:

      【解决方案2】:

      我有同样的问题。 我发现,在 javascript-land 中,您应该使用 Sys.Extended.UI 而不是 AjaxControlToolkit。 所以,而不是:

      cal = $create(AjaxControlToolkit.CalendarBehavior, ...
      

      你这样做:

      cal = $create(Sys.Extended.UI.CalendarBehavior, ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-14
        • 2012-12-12
        • 1970-01-01
        • 1970-01-01
        • 2011-10-01
        • 2013-07-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多