教程集 www.jiaochengji.com
教程集 >  脚本编程  >  Asp.net  >  正文 Page.FindControl方法找不到指定控件的解决方法

Page.FindControl方法找不到指定控件的解决方法

发布时间:2016-12-03   编辑:jiaochengji.com
教程集为您提供Page.FindControl方法找不到指定控件的解决方法等资源,欢迎您收藏本站,我们将为您提供最新的Page.FindControl方法找不到指定控件的解决方法资源

Page.FindControl方法找不到指定控件的解决方法


FindControl方法是在当前naming container查找指定ControlID对应的控件,该naming container是一个实现了INamingContainer接口的对象。

可以在该页的页指令中添加 Trace=Ture 指令来跟踪页面输出查看控件树。一个页面的控件树中,Page对象必然是顶级的naming container,但绝非必然是唯一的naming container。譬如当有GridView存在的话,GridView其实也是一个naming container,要找GridView中的一个ControlID,就不能用Page.FindControl,而得用[GridView对象].FindControl方法。

很多时候,因为是动态控件,明知道是在同一个naming container中,但不知道该naming container是什么对象,一个控件要找到另一个控件,可以用this.Parent.FindControl方法。

2. 解决问题:

因为使用MasterPage后,你再用Page.FindControl不可能找到的,这没什么疑问,因此正确的方法是你先找到此控件的naming container,这里也就是ContentPlaceHolder#的ID,然后在去找你的控件,比如:Page.Master.FindControl("ContentPlaceHolder1").FindControl("TextBox1")。

3. 深度分析:

显然在第二步里面我们给问题解决了,但是仔细分析,不难发现这个解决方案本身存在着另外一个问题,即:如果ContentPlaceHolder1这个ID改变了,那么你的CODE就不能用了,也要改变。

一个跟更好的解决方法是:

TextBox[] tbx = new TextBox[] { this.TextBox1,this.TextBox2......}

然后使用tbx[index]来作为你要的控件

您可能感兴趣的文章:
Page.FindControl方法找不到指定控件的解决方法
asp.net Control控件常用的属性与方法
asp.net 动态添加控件与事件的方法介绍
asp.net 动态创建控件的演示实例
这个是一个常见错误
Winodws10系统输入法在哪里?win10输入法图标不见如何解决?
phpMyAdmin无法载入 mysqli 扩展,请检查 PHP 配置的解决方法
打开IE9浏览器时出现蓝屏死机的解决方法
解决WebBrowser控件会导致应用程序占用内存居高不下问题
asp.net 服务器应用程序不可用的解决办法

[关闭]
~ ~