2009-09-17 54 views
2

我怎么能embbed在页面由CalendarBehavior所需的所有脚本,而不实际使用服务器端控件(CalendarExtender)一CalendarBehavior。我无法使用服务器端扩展程序的原因是,我有一个可能具有数百个Date控件的页面;我希望能够根据需要延迟加载日历(当用户单击控件时)。弹出从Javascript

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

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

的问题是,不包括来自AjaxControlToolkit资源所有需要的JS,它会抛出错误:

AjaxControlToolkit is undefined. 

非常感谢,

Florin S.

回答

1

我发现了下面的黑客,它将注册由CalendarExtender公开的所有脚本和css引用。我认为解决的办法是通用的,因此,它可以与其它扩展使用:需要为RegisterCssReferences呼叫

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); 
} 

临时Extender实例,否则会抛出异常。

它有效,但YMMV。