2010-12-14 71 views
0

我们已经创建了一个UserControl。在用户控制内部,我们正在创建更新面板。在面板内部,我们创建了各种控件,如TextBox,Button,DropDownList和ListBox以及与它们相关的事件buttonclick(),DropDown_selectedIndexChanged(),TextBox_TextChenged()等等。所有控件(包括更新面板)都是用c#编程创建的。 为了使我们使用ScriptManager的事件变得简单。关于UserControl中的Ajax

的OnInit上的功能被添加的ScriptManager编程就像如图所示:

ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); 
      if (scriptManager == null) 
      { 
       scriptManager = new ScriptManager(); 
       //scriptManager.EnablePartialRendering = true; 
       this.Controls.AddAt(0,scriptManager); 
      } 

页面加载仅一次事件之后每当被解雇部分回发(这是需要的),但之后没有事件被炒鱿鱼。

所有有效的更改都已在web.config文件中为AJAX完成。 请提出可能的原因和问题的解决方案。

+0

您是否收到任何错误消息? – 2010-12-14 11:11:28

+0

没有错误消息,包括任何JavaScript错误。 – Anoop 2010-12-14 11:12:52

回答

0

在部分回发上,ScriptManager将不会被添加,因为您试图将它添加到UpdatePanel之外(它必须在其中)。这适用于首页加载,因为它不是部分回传。但是在部分回发之后,动态添加的ScriptManager将不可用于页面,并且因为您试图在UpdatePanel之外添加它 - AddAt(0,...) - 在部分回发之后,它实际上不会被添加。在部分回发中,您只能影响启动回发的UpdatePanel中的内容。底线是,你真的不能动态添加ScriptManager,因为在部分回发之后,它永远不会存在。就像你不能在UpdatePanel之外动态添加任何其他控件一样。

+0

但同一个应用程序在具有相同配置的另一台服务器上完美工作。 – Anoop 2010-12-14 14:23:50

+0

直观地说,我认为由初始页面加载生成的所有脚本都不会与部分回发后UpdatePanel内生成的任何脚本正确链接,因为它是由ScriptManager的不同实例生成的。我可能是错的,但是,也许ScriptManager不是依赖于上下文的,但它似乎非常直截了当地认为这种设计是可行的。无论如何,如果它在具有完全相同配置的另一台服务器上工作......那么我会说配置可能不完全相同。 – 2010-12-14 15:00:10

+0

您是否看到此线程?这可能有多种方式。 http://stackoverflow.com/questions/183950/add-scriptmanager-to-page-programmatically – 2010-12-14 15:09:28