protected void btnReset_Click(object sender, EventArgs e)
    {
        TextBox txtbox;
        foreach (Control ctl in Form.Controls)
        {
            txtbox = ctl as TextBox;
            if (txtbox != null)
            {
                txtbox.Text = string.Empty;
            }
        }
    }点下按钮后 清空所有TextBox中的内容页面中 我的 Form 里面有一个 runat=server 的 <div> 为什么遍历不到div里面的TextBox
多加了这个 就可以实现了  divCompany是运行在服务器端的div的ID
foreach (Control ctl in divCompany.Controls)
{
    txtbox = ctl as TextBox;
    if (txtbox != null)
    {
        txtbox.Text = string.Empty;
    }
}
能否合并起来啊?  && 符号好像不行

解决方案 »

  1.   

    要用递归才行        protected   void   btnReset_Click(object   sender,   EventArgs   e)
            {
                 foreach(Control c in Form.Controls)
                      ClearTextBox(c);
            } 
            void ClearTextBox(Control ctrl)
            {
                if(ctrl is TextBox)
                    (ctrl as TextBox).Text = "";
                else if(ctrl.Controls.Count > 0)
                    foreach(Control c in ctrl.Controls)
                        ClearTextBox(c);
            }
      

  2.   

    因为Form下的Controls并不包含那些TextBox,估计只包含了divCompany这个Control,
    那要遍历的那些文本框实在divCompany下面的,有层次关系
    你可以设断点调试下
    如果要遍历页面上的所有文本框的话那得用递归遍历才行
    还有一点:foreach是不能改变循环体的属性的,估计你得用for循环
      

  3.   

    for吧for吧for吧for吧for吧for吧for吧
      

  4.   

    从你的事件名来看btnReset_Click 应该是重置所有的文本框
    建议可以用jQuery来实现 用他的选择器遍历更方便
      

  5.   

    void Find(Control.ControlCollection ctls) 

      foreach (Control c in ctls)  
      {  
        if (c is TextBox)  
        {  
          Textbox tb = c as TextBox; 
          tb.Text=""; 
        } 
        else if (c.Controls.Count>0) Find(c.Controls); 
      }  
    }
      

  6.   

        private void ClearTextBox()
        {
            foreach (System.Web.UI.Control control in this.Controls)
            {
                for (int i = 0; i < control.Controls.Count; i++)
                {
                    if (control.Controls[i] is System.Web.UI.WebControls.TextBox)
                    {
                        System.Web.UI.WebControls.TextBox tbx = (System.Web.UI.WebControls.TextBox)control.Controls[i];
                        tbx.Text = "";
                    }
                }
            }
        }
    javaScript:         function ClearAllTextBox() {
                 var obj = window.document.forms[0];
                 for (i = 0; i < obj.elements.length; i++) {
                     var elem = obj.elements[i];
                     if (elem) {
                         if (elem.type == "text") {
                             elem.value = "";
                         }
                     }
                 }
             }
         
      

  7.   

    顺路问下各位高手,用js的getElementsByTagName,可以遍历到分层的页面里所有textbox吗?
      

  8.   

    你循环的  foreach   (Control   ctl   in   Form.Controls) 取的是 Form.Controls,就是FORM的子控件,DIV是FORM的一个控件,而DIV里面的控件是DIV的子控件。你当然取不到了。