以前我就曾经写过一个关于MasterPage里面使用this.FindControl()函数的问题。

http://www.cnblogs.com/dlwang2002/archive/2006/07/09/446643.html

当时通过其他方式解决了,但是今天又遇到了。在google上找到了一篇文章http://west-wind.com/WebLog/posts/5127.aspx说的很对,能够解决这个问题

 

在没有使用MasterPage之前,页面this访问到的对象就是他自己,所以使用this,FindControl也就没什么问题。

但是使用MasterPage之后,this.Control.Count=1,就只有一个。跟踪一下:   this.Controls[0]      {ASP.module_mp1_master}       System.Web.UI.Control {ASP.module_mp1_master} .

也就是说,加入masterPage之后他的控件的顺序就变了。(以前看过一个在asp.net1.1下的MasterPage实现,也是类似的方式,重新组织控件)。这就是问题所在。

 

解决方法:

把原来这样的使用:

使用MasterPage后的this.FindControl()函数的问题protected void AssignControls()
使用MasterPage后的this.FindControl()函数的问题


变成这样调用:

使用MasterPage后的this.FindControl()函数的问题protected void AssignControls()
使用MasterPage后的this.FindControl()函数的问题


也就是说,先使用this.Master.FindControl("Content")来找到在MasterPage上相对的位置,然后再按照以前的调用方式就可以了。

 

或者使用这个函数(这三个函数都来自原作者Rick Strahl

使用MasterPage后的this.FindControl()函数的问题public static Control FindControlRecursive(Control Root, string Id)
使用MasterPage后的this.FindControl()函数的问题

转自:http://www.cnblogs.com/dlwang2002/archive/2006/12/21/599107.html

相关文章:

  • 2021-11-12
  • 2021-06-11
  • 2022-02-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-26
  • 2021-10-03
猜你喜欢
  • 2022-12-23
  • 2022-01-07
  • 2022-12-23
  • 2021-12-13
  • 2021-06-16
  • 2021-10-16
  • 2022-12-23
相关资源
相似解决方案