有没有简单的方法来通过id(在任何嵌套容器中)在ASP.NET中查找控件?除遍历整个控件树外。如何通过编号找到页面上的控件
事情是这样的例子:
TextBox tb = new TextBox() { ID = "textboxId"};
panel3.Controls.Add(tb);
而在另一种方法/类:
TextBox nameTextbox = MethodToFindControl("textboxId") as TextBox;
有没有简单的方法来通过id(在任何嵌套容器中)在ASP.NET中查找控件?除遍历整个控件树外。如何通过编号找到页面上的控件
事情是这样的例子:
TextBox tb = new TextBox() { ID = "textboxId"};
panel3.Controls.Add(tb);
而在另一种方法/类:
TextBox nameTextbox = MethodToFindControl("textboxId") as TextBox;
不...你,直到你找到控制遍历所有控件树则停止遍历,你的方法(MethodToFindControl)应该是一个递归方法,它有两个参数:根容器(大部分是它的页面)和要查找的控件的id。
如果我正确理解你的问题,你可以使用的方法FindControl如下:
文本框nameTextbox =(文本框)panel3.FindControl( “textboxId”);
如果您无法使用findcontrol找到控件,则将相应的td/panel声明为服务器控件,然后您应该能够轻松地在td或面板元素中找到所需的控件。
DirectCast(tdMultiCnstrTypCode.FindControl("BBIMultiConsCode" & cnt + 1), DropDownList)
这种方法比通过页面的所有控件和子控件遍历都容易。
有关函数的示例,请参阅http://www.codinghorror.com/blog/2005/06/recursive-pagefindcontrol.html – Lareau 2010-12-09 02:29:55
谢谢,但我知道如何遍历树(正如问题所述 - 我是搜索不同的方法)。 – 2010-12-09 10:04:52