2010-12-09 22 views
2

有没有简单的方法来通过id(在任何嵌套容器中)在ASP.NET中查找控件?除遍历整个控件树外。如何通过编号找到页面上的控件

事情是这样的例子:

TextBox tb = new TextBox() { ID = "textboxId"}; 
panel3.Controls.Add(tb); 

而在另一种方法/类:

TextBox nameTextbox = MethodToFindControl("textboxId") as TextBox; 

回答

3

不...你,直到你找到控制遍历所有控件树则停止遍​​历,你的方法(MethodToFindControl)应该是一个递归方法,它有两个参数:根容器(大部分是它的页面)和要查找的控件的id。

+1

有关函数的示例,请参阅http://www.codinghorror.com/blog/2005/06/recursive-pagefindcontrol.html – Lareau 2010-12-09 02:29:55

+0

谢谢,但我知道如何遍历树(正如问题所述 - 我是搜索不同的方法)。 – 2010-12-09 10:04:52

5

如果我正确理解你的问题,你可以使用的方法FindControl如下:

文本框nameTextbox =(文本框)panel3.FindControl( “textboxId”);

1

如果您无法使用findcontrol找到控件,则将相应的td/panel声明为服务器控件,然后您应该能够轻松地在td或面板元素中找到所需的控件。

DirectCast(tdMultiCnstrTypCode.FindControl("BBIMultiConsCode" & cnt + 1), DropDownList) 

这种方法比通过页面的所有控件和子控件遍历都容易。

相关问题