现在的位置: 首页 > 综合 > 正文

No UpdatePanel found for AssociatedUpdatePanelID “UpdatePanelTreeView” 解决办法

2012年12月12日 ⁄ 综合 ⁄ 共 1043字 ⁄ 字号 评论关闭
最近用 ASP.NET 2.0 AJAX Extensions (Atlas 1.0 Beta )做了一个小项目,遇到一些问题,搞的头都晕了,现把它们记录下来,如果你也遇到这样的问题,希望对你有帮助。

如果你在 ASP.NET 2.0 AJAX  工程中使用了框架,那做页面跳转可能是个麻烦事,因为在使用了UpdatePanel的页面,是不能使用Response.Write()来输出JavaScript,这样也就实现不了把跳转代码写到客户端,使用RegisterClientScriptBlock注册也不行:

   string js = "<script>parent.window.location.href=\"Login.aspx\";</script>"

如果是用Response.Redirect("Login.aspx")的话,那只是重定向的框架中的某一部分,不能实现Session过期后整个跳转到Login.aspx页面。
要解决此方法,需要用到ASP.NET 2.0中的母版页,做一个母版页,把通用的东西集中到母版页中,然后新建的页面只要继承自它就好了,这样做的好处就是不再需要框架,出错后可以用 Response.Redirect("Login.aspx") 来跳转到登录页面了。

Beta版的UpdateProgress增加了一个属性 AssociatedUpdatePanelID,这个属性可以用来指定哪个UpdatePanel更新后,显示UpdateProgress中的内容。这样在一个页面,可以出现多个UpdateProgress ,为不同的UpdatePanel指定不同的更新内容。

这个一个很好的改进,如果用在框架页中,为UpdateProgress指定AssociatedUpdatePanelID没有任何问题,但是我把工程改用MasterPage后,问题就出来了
No UpdatePanel found for AssociatedUpdatePanelID "UpdatePanelTreeView"  ,老是出现这个问题,搞的我莫名其妙,用google在国外的网站上找到了解决办法,就是在Page_Load()事件中,重新指定AssociatedUpdatePanelID,但是不要写在 if(!this.IsPostBack){}里:
 this.UpdateProgressGridView.AssociatedUpdatePanelID = this.UpdatePanelTreeView.UniqueID;

抱歉!评论已关闭.