当前位置: 代码迷 >> ASP.NET >> foreach循环清空页面全部textbox控件的值的有关问题
  详细解决方案

foreach循环清空页面全部textbox控件的值的有关问题

热度:443   发布时间:2013-02-25 00:00:00.0
foreach循环清空页面全部textbox控件的值的问题
我在项目中想将页面的textbox控件全部清空,控件很多逐个清空很繁杂,现在用foreach循环:

foreach (Control ctl in this.Controls)
  if (ctl is TextBox)
  { ((TextBox)ctl).Text = " "; }

 

运行后不成功,跟总调试发现代码没有执行{ ((TextBox)ctl).Text = " "; }这个语句,而是来回的执行上面一部分,foreach (Control ctl in this.Controls)
  if (ctl is TextBox),请各位网友帮忙分析。



------解决方案--------------------------------------------------------
void ClearControl(Control x)
{
foreach (Control ctl in x.Controls)
{
if (ctl is TextBox)
{ ((TextBox)ctl).Text = " "; }
if(ctl.Controls.Count>0)
{
 ClearControl(ctl );//递归
}
}
}

ClearControl(Page.Form)
------解决方案--------------------------------------------------------
页面的控件层次类似于一棵倒立的树,你要递归地查找才行。
C# code
    protected void Page_Load(object sender, EventArgs e)    {        Reset(this.Page);    }    public void Reset(Control control)    {        foreach (Control ctl in control.Controls)        {            if (ctl is TextBox)            {                TextBox tb = ctl as TextBox;                tb.Text = string.Empty;            }            if (ctl.HasControls())                Reset(ctl);        }    }
------解决方案--------------------------------------------------------
C# code
foreach(System.Web.UI.Control ctl in this.Form.Controls){      Response.Write(ctl.ToString()+"<br />");      if (ctl is System.Web.UI.WebControls.TextBox)      {            System.Web.UI.WebControls.TextBox tb = (System.Web.UI.WebControls.TextBox)ctl;            tb.Text = string.Empty;       }}
------解决方案--------------------------------------------------------
探讨

谢谢各位网友,我尝试改为:
foreach (Control ctl in this.Form.Controls)
if (ctl is TextBox)
{ ((TextBox)ctl).Text = " "; }

即加一个Form限制,调用Form控件的子控件,这样就可 实现了!
  相关解决方案