AJAX中UpdatePanel 常见问题总结

  1.ScriptManager在源代码中的位置不正确

     每个page只需要一个ScriptManager或者轻量级的ScriptManagerProxy,必须在UpdatePanel之前

      2. ScriptManager没有启用EnablePartialRendering,需要设置为true;

      3. 局部更新过程没法向页面写入JavaScript

            这需要用Scriptmanager的一个静态方法注册客户端脚本即可:

             Scriptmanager.RegisterStartupScript(panelID,typeof(UpdatePanel),"scriptname","alert('put something you need')",true);

       4.动态加载的用户控件中的UpdatePanel无法正常工作

          一般程序员都在Page_Load(obj,e)这个Load的函数里动态加载控件,但是在包含UpdatePanel中将无法正常工作。因为加载太晚了,UpdatePanel

     的实现要靠Scriptmanager的帮助,ASP.NET AJAX将在Page的Load的阶段中自动进行这两个控件之间的协调。所以上述在Page_Load()方法中加载

     用户控件,已经错过了UpdatePanel和Scriptmanager的沟通的时期。这样新加载的用户控件中的UpdatePanel和页面中的Scriptmanager彼此互不知晓,自然无法得到我们期望的AJAX动态加载用户控件的效果。

      解决方法就是将动态加载用户控件的代码移到Page_Init()中就可以了 

      例如:protected void Page_Init(object sendre,EventArg e)

     {

        Control myControl;

         if(....)

          myControl=Page.LoadControl("MyUserControl1.ascx");

          else

          myControl=Page.LoadControl("MyUserControl2.ascx");

      }

    

posted @ 2012-12-26 11:06  满嘴树枝的味道  阅读(209)  评论(0)    收藏  举报