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]来作为你要的控件

时间: 2024-09-20 22:37:13

Page.FindControl方法找不到指定控件的解决方法的相关文章

Page.FindControl方法找不到指定控件的原因

在ASP.NET 2.0中,引入了MasterPage的机制,在当前页使用MasterPage的情况下,放在 ContentPlaceholder1这样的内容页的控件无法用Page.FindControl来查找,原因何在? MSDN对FindControl的解释:在当前的命名容器中搜索带指定 id 参数的服务器控件 这里有一篇文章阐述阐述FindControl方法和INamingContainers接口:http://www.odetocode.com/Articles/116.aspx Fin

win7系统提示你尚未正确安装工行网银控件的解决方法

  win7系统提示你尚未正确安装工行网银控件的解决方法           步骤一:打开我们在win7 32位系统中常用的浏览器,然后找到菜单栏中的"工具"打开菜单之后点击"Internet选项"打开Internet属性设置窗口,并把窗口设置切换到"安全"这个选项卡. win7系统 步骤二:在安全的选项卡下,我们看到下方有一个名为"自定义级别"的按钮,我们点击这个按钮之后,会进入到一个新的窗口进行设置,在窗口下方的列表里面找

水晶报表 配置错误:CrystalDecisions.Web ,系统找不到指定的文件的解决方法

水晶报表 配置错误:分析器错误信息: 未能加载文件或程序集"CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"或它的某一个依赖项.系统找不到指定的文件. 本来是以前缺少某些组件或文件,在翻了大量的资料后,才发现是缺少.net环境下的一些组件.解决方法是安装CRRedist2005_x86.msi 即可. 下载地址是: Crystal Reports fo

网页中Flash出现“单击激活并使用此控件”的解决方法

解决|控件|网页 在网页中插入的Flash,在进行页面浏览时会有讨人嫌的提示"单击激活并使用此控件",Flash文件的周围具有边框显示,必须单击该Flash才能消除该提示,着实很麻烦. 平时一直没在意,最近感觉到看着页面中的Flash比较难过,随即搜索些解决方案整理下来: 首先了解下含有Flash内容的网页在IE浏览器下为什么会出现"单击激活并使用此控件"? 微软为了避免与eolas公司和加利福尼亚大学之间的专利侵权纠纷,而发布的一个ie非安全更新,系统编号为kb9

Win7系统中Web浏览器阻止activex控件的解决方法

Win7系统中,当我们打开浏览器观看一些视频或者Flash文件时会被提示您的Web浏览器已经阻止此站点不安全的ActiveX控件.因此,可能此页显示不正确或视频无法收看.那么出现这种情况要怎样解决呢. 第一步:打开浏览器,然后选择菜单栏上"工具"选项,选择"工具"选项之后,选择下拉菜单的"Internet选项". 第二步:打开Internet选项之后,切换到安全选项卡,然后选择安全选项卡下的自定义级别. 第三步:单击自定义级别之后打开安全设置窗口

javascript-如何在js里为activex控件里的方法传入byte的数组

问题描述 如何在js里为activex控件里的方法传入byte的数组 我现在有一个activex的控件,它里面有个方法需要传入byte数组,控件里面的方法是usb_write(byte[] Q_index, byte[] Q_type, byte[] pQ_data),这个在js中如何为它里面传byte[]类型的参数啊 解决方案 try xxx.usb_write([1,2,3,5],[1,2,3,5],[1,2,3,5])

Win7无法安装ActiveX控件如何解决?

  ActiveX控件是网站常用的一款网页辅助工具,有时候我们可能需要安装它,但是却发现浏览器阻止了它安装,那么当你遇到这种情况该怎么办呢?不懂的朋友赶紧来看看小编整理的Win7系统无法安装ActiveX控件的解决方法吧! 以下从多种角度出发分析,并非仅仅针对截图所示及以上提示. 方法/步骤: 1.首先建议将相应网站加入可信站点. 2.其次建议选中可信站点.自定义级别--找到"下载未签名的ActiveX控件"--选中"启用". 注意:出于安全考虑,正常安装相应Act

asp.net简单页面控件赋值实现方法_实用技巧

本文实例讲述了asp.net简单页面控件赋值的方法.分享给大家供大家参考,具体如下: /// <summary> /// 赋值 表名,控件名,要查询的唯一数据 /// </summary> protected void SetEvaluate(string TableName, string UpName, string Id) { ContentPlaceHolder cph = (ContentPlaceHolder)Page.Master.FindControl("

asp.net-急死 为什么找不gridview的控件

问题描述 急死 为什么找不gridview的控件 public partial class Styles_Search : System.Web.UI.Page { List message = new List(); MyPetShopDataContext db = new MyPetShopDataContext(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { } } protecte