62,041
社区成员
发帖
与我相关
我的任务
分享
<table id="Tb1" runat="server" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td>
<div id="Type_1" runat="server" >
</div>
</td>
</tr>
<tr>
<td>
<div id="Type_2" runat="server" >
</div>
</td>
</tr>
<tr>
<td>
<div id="Type_3" runat="server" >
</div>
</td>
</tr>
</table>
System.Web.UI.WebControls. ???? = Tb1.FindControl("Type_" + dr["rowIndex"].ToString()) as System.Web.UI.WebControls.????;
var x = (HtmlGenericControl)Tb1.FindControl("Type_1");
var y = (HtmlGenericControl)Label1.FindControl("Type_1");
对于<table id="Tb1" runat="server" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td>
<div id="Type_1" runat="server" >
</div>
</td>
</tr>
<tr>
<td>
<div id="Type_2" runat="server" >
</div>
</td>
</tr>
<tr>
<td>
<div id="Type_3" runat="server" >
</div>
</td>
</tr>
</table>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
同样可以找到 Type_1。
因此,有人说从父控件开始执行 FindControl 来查找,这是不理解 FindControl 的机制的。正如这里所示,从 Label1 开始执行 FindControl 照样可以找到 Type_1,因为不论是 Tb1、Label1还是 Type_1,它们都在同一个 NamingContainer 下面。搞懂如何使用 FindControl 的机制,要先学过 NamingContainer 概念。这可以检验一个 asp.net 程序员是自学的还是专门学过 asp.net,一般自学的人所读的入门书虽“厚”但是罗列得较浅,所以不会讲到原理。