好久不写代码了,今天正好需要写一代码,遍历网上的控件,本以很简单,就写了以下这一段。
foreach (Control ctl in this.Page.Controls)
{
foreach (Control childctl in ctl.Controls)
{
((TextBox)childctl).Text = "";
}
}
但一测试,不行 。后来查了一下,这个页面加载了母版页,查了网上的写法,但不清楚。故自已写了一下,测试通过。
foreach (Control ctl in this.Page.Master.FindControl("MainContent").Controls)
{
if (ctl is TextBox)
{
((TextBox)ctl).Text = "";
}
}
由于这个项目中多处用到这个方法,故封装了一下。
public void OperControl(object obj)
{
foreach (Control ctl in ((Page)obj).Master.FindControl("MainContent").Controls)
{
if (ctl is TextBox)
{
((TextBox)ctl).Text = "";
}
}
}
同时,把使递归方法的代码一并贴上。
public void TraversalControl(ControlCollection ctlCl)
{
foreach (Control ctl in ctlCl)
{
if (ctl.HasControls())
{
TraversalControl(ctl.Controls);
}
else
{
if(ctl is TextBox)
{
//
}
else if (ctl is Label)
{
//
}
}
}
}