c#
  • asp.net-ajax
  • iscriptcontrol
  • 2009-11-19 14 views 4 likes 
    4

    我寫了一個自定義控件包含以下內容:GetScriptReferences不會被調用

    [assembly: System.Web.UI.WebResource("InSysControls.AssignmentLists.AssignmentLists.js", "text/javascript")] 
    namespace InSysControls 
    { 
        [ToolboxData("<{0}:AssignmentLists ID='AssignmentListsID' runat=\"server\"> </{0}:AssignmentLists>"), ParseChildren(true, "Items")] 
        public class AssignmentLists : CompositeDataBoundControl, IScriptControl, INamingContainer 
        { 
         #region IScriptControl Members 
    
         public IEnumerable<ScriptDescriptor> GetScriptDescriptors() { 
          ScriptControlDescriptor descriptor = new ScriptControlDescriptor(this.GetType().FullName, this.ClientID); 
          yield return descriptor; 
         } 
    
         public IEnumerable<ScriptReference> GetScriptReferences() { 
          yield return new ScriptReference("InSysControls.AssignmentLists.AssignmentLists.js", "InSysControls"); 
         } 
    
         #endregion 
        } 
    } 
    

    有誰知道的原因,既不GetScriptDescriptors或GetScriptReferences應該不會被調用?控制的其他部分工作得很好。

    回答

    7

    您需要註冊的控制作爲一個ScriptControl的:

    protected override void OnPreRender(EventArgs e) 
    { 
    
        if (!this.DesignMode) 
        { 
    
         // Link the script up with the script manager 
         ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); 
         if (scriptManager != null) 
         { 
          scriptManager.RegisterScriptControl(this); 
         } 
    
        } 
    
        base.OnPreRender(e); 
    
    } 
    
    protected override void Render(HtmlTextWriter writer) 
    { 
        if (!this.DesignMode) 
        { 
         ScriptManager.GetCurrent(this.Page).RegisterScriptDescriptors(this); 
        } 
        base.Render(writer); 
    } 
    
    +0

    嗯,沒錯。錯過了。我向你的大方向鞠躬。 – Kiddan 2009-11-20 08:04:01

    相關問題