FindControl的使用方法 Control.FindControl (String):在当前的命名容器中搜索带指定 id

参数的服务器控件。(有点类似javascript中的getElementById(string))

简单的例子:

<form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server">TextBox</asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button"

OnClick="Button1_Click" />
        <br />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>
 </form>

如果需要获得页面中的"TextBox1",代码中可以使用this.TextBox1来引用,这里我们使用

FindControl:

protected void Button1_Click(object sender, EventArgs e)
    {
      //Control c = this.FindControl("TextBox1");
     //TextBox tb= (TextBox)c;
     //FindControl返回的是一个Control类型的控件,需要强制类型转化成TextBox类型
      TextBox tb=(TextBox)this.FindControl("TextBox1");
      this.Label1.Text = tb.Text;    }

当TextBox1放到其他控件里应该怎么查找呢?

<div>
      
        <asp:Panel ID="Panel1" runat="server" Height="50px" ;125px">
        <asp:TextBox ID="TextBox1" runat="server">TextBox</asp:TextBox>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <asp:Button ID="Button1" runat="server" Text="Button"

OnClick="Button1_Click" />
        </asp:Panel>
    </div>

当TextBox1放到Panel里,似乎没什么影响 TextBox tb=(TextBox)this.FindControl

("TextBox1"),当查看生存页面的HTML代码是发现,TextBox的ID并没有改变,所以可以获得

TextBox1。

<div>
      
        <div id="Panel1" style="height:50px;;">
 
        <input name="TextBox1" type="text" value="TextBoxdsd" id="TextBox1" />
        <span id="Label1">TextBoxdsd</span>
        <input type="submit" name="Button1" value="Button" id="Button1" />
       
</div>
    </div>

当TextBox1放到DataGrid中

<asp:DataGrid ID="dg1" runat="server"

OnSelectedIndexChanged="dg1_SelectedIndexChanged">
        <Columns>
        <asp:TemplateColumn>
        <ItemTemplate>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        </ItemTemplate>
        </asp:TemplateColumn>
            <asp:ButtonColumn CommandName="Select" Text="选择"></asp:ButtonColumn>
        </Columns>
        </asp:DataGrid>

这时候this.FindControl("TextBox1")==null,无法获得TextBox1,查看生成页面HTML发现,页

面有多个

<input name="dg1$ctl02$TextBox1" type="text" id="dg1_ctl02_TextBox1" />

<input name="dg1$ctl03$TextBox1" type="text" id="dg1_ctl03_TextBox1" />

TextBox1隐藏了,给DataGrid添加选择列,通过以下方法获得被选择行的TextBox1

protected void dg1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Control c = this.dg1.Items[this.dg1.SelectedIndex].FindControl("TextBox1");
        //Control c = this.dg1.SelectedItem.FindControl("TextBox1");
        TextBox tb = (TextBox)c;
        tb.Text = "TextBox";
    
    }

protected void dg1_EditCommand(object source, DataGridCommandEventArgs e)
    {
        TextBox tb = (TextBox)e.Item.FindControl("TextBox1");
        this.Label1.Text = tb.Text.ToString();
    }

如果是在DataGrid的页眉和页脚:

((TextBox)this.dg1.Controls[0].Controls[0].FindControl("TextBoxH")).Text = "Head";
 ((TextBox)this.dg1.Controls[0].Controls[this.dg1.Controls[0].Controls.Count -

1].FindControl("TextBoxF")).Text = "Footer";

TextBox1在Repeater中

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1"

OnItemCommand="Repeater1_ItemCommand">
        <ItemTemplate>
        <asp:TextBox ID="TextBox1" runat="server" Text=""></asp:TextBox><%

#DataBinder.Eval(Container.DataItem,"ProductName")%><asp:Button ID="btn"

OnClick="btn_click" runat="server" Text="dddd" /><br />
        </ItemTemplate>
        </asp:Repeater>

通过按钮来获得TextBox1:

protected void btn_click(object sender, EventArgs e)
    {
        //获得按钮
        Button btn = (Button)sender;
        TextBox tb = (TextBox)btn.Parent.FindControl("TextBox1");
        tb.Text = "Text";
    }

或者

foreach (RepeaterItem item in this.Repeater1.Items)
        {
            ((TextBox)item.FindControl("TextBox1")).Text = "Text2";
        }

自定义控件里的TextBox1

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs"

Inherits="WebUserControl" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

引用<uc1:WebUserControl ID="WebUserControl1" runat="server" />

获取TextBox1:

((TextBox)this.WebUserControl1.FindControl("TextBox1")).Text = "userc";

模板页访问页面TextBox1

//模板页的TextBox1
        TextBox tbM = (TextBox)this.FindControl("TextBox1");
        //页面中的TextBox1
        TextBox tbC = (TextBox)this.FindControl("ContentPlaceHolder1").FindControl

("TextBox1");
        tbC.Text = tbM.Text;

页面使用模板页的TextBox1

//模板页的TextBox1
        TextBox tbM = (TextBox)Master.FindControl("TextBox1");
        //本页面的TextBox1
        //错误的方法:TextBox tbC = (TextBox)this.FindControl("TextBox1");
        TextBox tbC = (TextBox)Master.FindControl

("ContentPlaceHolder1").FindControl("TextBox1");
        tbM.Text = tbC.Text.ToString();

转载于:https://www.cnblogs.com/12go/archive/2011/11/27/2264853.html

FINDCONTROL的详细介绍相关推荐

  1. HTML页面加载和解析流程详细介绍

    浏览器加载和渲染html的顺序.如何加快HTML页面加载速度.HTML页面加载和解析流程等等,在本文将为大家详细介绍下,感兴趣的朋友不要错过 浏览器加载和渲染html的顺序 1. IE下载的顺序是从上 ...

  2. mysql为什么要压测_mysql集群压测的详细介绍

    本篇文章给大家带来的内容是关于mysql集群压测的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. mysql压测 mysql自带就有一个叫mysqlslap的压力测试工具,通 ...

  3. php比较运算符案列,PHP实例:PHP比较运算符的详细介绍

    <PHP实例:PHP比较运算符的详细介绍>要点: 本文介绍了PHP实例:PHP比较运算符的详细介绍,希望对您有用.如果有疑问,可以联系我们. 比拟运算符种类 PHP实战如同它们名称所暗示的 ...

  4. Tempdb数据库详细介绍

    Tempdb数据库详细介绍 一.Tempdb简介 tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象.可以简单理解tempdb是SQLServer的 ...

  5. linux路由介绍,Linux的路由表详细介绍

    Linux的路由表详细介绍 一 在Linux下执行route命令[root@localhost backup]# route -nKernel IP routing tableDestination ...

  6. pythonexcel介绍_Python 中pandas.read_excel详细介绍

    Python 中pandas.read_excel详细介绍 #coding:utf-8 import pandas as pd import numpy as np filefullpath = r& ...

  7. 渡神纪帧数测试软件,渡神纪芬尼斯崛起配置要求高吗 渡神纪配置要求详细介绍_游侠网...

    渡神纪芬尼斯崛起配置要求高吗?本作将在12月3日登陆主机和PC,很多玩家比较关心游戏的配置,这里给大家带来了渡神纪配置要求详细介绍,快来了解下吧. 渡神纪配置要求详细介绍 最低要求(720p/30 f ...

  8. C++11 unordered_map详细介绍

    整理的算法模板合集: ACM模板 目录: 1.介绍 1.1 特性 2. 模版 2.1 迭代器 3. 功能函数 3.1 构造函数 3.2 容量操作 3.2.1 size 3.2.2 empty 3.3 ...

  9. autosar中com模块_详细介绍AUTOSAR各个模块作用PART1(OS,SYS)

    这片文章中我们详细讲解下每个模块的功能,上图是vector的autosar方案,每个模块的详细介绍后续会有单独文章进行讲解,请关注.以下是各个模块的简介 1.VHSM hardware Securit ...

最新文章

  1. C#分析数据库结构,使用XSL模板自动生成代码
  2. Altium Designer飞线(未连接线)不显示的解决方法
  3. OpenGL与OpenCV实现增强现实
  4. boost::dijkstra_shortest_paths用法的测试程序
  5. 硬件知识:SSD越用越慢的原因,看完你就懂了!
  6. 转:char*, char[] ,CString, string的转换
  7. CS231n Convolutional Neural Networks for Visual Recognition------Python Tutorial
  8. java 写入xml文件_java读写xml文件
  9. golang:Linux下安装go环境
  10. python根据行名称生成二维数组
  11. params参数的调用
  12. 史上最全的美国留学资料,从此不用找中介
  13. JMeter 请求报Response code:415错误
  14. 我喜欢计算机作文450字,我喜欢的一种游戏作文450字(精选8篇)
  15. 【论文下饭】Temporal Graph Network for Deep Learning on Dynamic Graphs
  16. 区块链安全:实现公链双花攻击的多种方法
  17. java中用于定义小数的关键字_Java 中用于定义小数的关键字有两个:( ) 和 ( )。_学小易找答案...
  18. 图片的放大ZommJS
  19. QT 无边窗口圆角实现
  20. 【问】默认实例名是多少?

热门文章

  1. 干货丨零基础学习大数据,搭建Hadoop处理环境
  2. np.max()和np.argmax()
  3. 关注:诺奖得主被爆40多篇论文P图造假!涉及国内“杰青”
  4. 机器人智能抓取系统:目前几种主流的解决方案
  5. 中国芯片将靠此超车!RISC-V架构神在哪全解构【附下载】
  6. 机器视觉行业的现状和未来
  7. Nature Human Behavior:大脑对不公平的反应有助预测抑郁症
  8. 旧手机别卖掉换脸盆了,自制服务器了解一下!
  9. 外包程序员是如何花 5 年时间从月薪 4 千到年薪近百万?
  10. CIO无法忽视的三大云角色