2

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

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

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

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

AjaxControlToolkit is undefined.

非常感谢你,

弗洛林·S。

4

2 回答 2

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。

于 2009-09-29T14:34:15.357 回答
0

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

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

你来做这件事:

cal = $create(Sys.Extended.UI.CalendarBehavior, ...
于 2018-09-23T02:26:39.830 回答