2009-09-17 41 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。