asp.net FindControl方法误区和解析 程序员文章站 2024-03-07 12:26:09 1.认为findcontrol方法寻找的范围是给定control的后代控件。 复制代码 代码如下: 1.认为findcontrol方法寻找的范围是给定control的后代控件。 如上面代码,后台用panel1.findcontrol("button1")寻找,认为这样范围小些可以提高效率,其实即使用textbox1.findcontrol("button1")也一样能找到。前有所述,findcontrol方法是根据id在control所在的命名容器中寻找相应控件。当执行textbox1.findcontrol("button1")时,asp.net先获取textbox1.namingcontainer,其值为页面本身(最后生成的xxxx_aspx类实例),再向下递归寻找相应id的控件,所以一样能找到button1。 同样的,如果用textbox1.findcontrol("label1")也是能找到label1的。 2.不理解为什么this.findcontrol方法找不到gridview里的控件。 其实很好理解,findcontrol方法寻找时只在本命名容器下寻找,不会进入其他命名容器中寻找,而命名容器(namingcontainer)不只是页面本身,还包括gridviewrow、datalistitem、repeateritem、usercontrol、masterpage等等诸多控件,这些都继承了inamingcontainer接口,它们的一个显著特征是其子控件的uniqueid和clientid一般都不同于id(除了顶层的页面对象)。 3.认为findcontrol运行效率差。 实际上asp.net运行时分析aspx、ascx、master等文件标签结构,生成类似dom的控件树,一般对树的查询操作效率还是比较高的,尤其当问题规模不太大时。一般来说,实际页面里的控件数量不可能成千上万,而且寻找时又不能越过本命名容器,这些因素限制了问题规模。所以说findcontrol的效率并不差。 相关标签: asp.net FindControl 上一篇: A data matrix implementation 2 博客分类: OO* JavaSQLXML 下一篇: asp.net下按钮点击后禁用的实现代码 推荐阅读 asp.net FindControl方法误区和解析 ASP.NET缓存 方法分析和实践示例 asp.net下通过泛解析和伪静态实现二级域名的实现方法 ASP.NET缓存的方法和最佳实践 asp.net下无法循环绑定投票的标题和选项的解决方法 一个Asp.Net的显示分页方法 附加实体转换和存储过程 带源码下载 Java中使用DOM和SAX解析XML文件的方法示例 ASP.NET Web页生命周期和执行的方法介绍 asp.net 简单工厂模式和工厂方法模式之论述 解析Java中的队列和用LinkedList集合模拟队列的方法