我用这段语句搜索整个页面,跟踪的时候发现完全不执行中间的IF语句,不作循环直接跳出循环
foreach (System.Web.UI.Control con in Page.Controls[1].Controls)
         {
 if (con.GetType().ToString()=="System.Web.UI.WebControls.TextBox")
((System.Web.UI.WebControls.TextBox)con).Text="";
         }为什么啊???

解决方案 »

  1.   

    是不是Page.Controls[1].Controls.Count=0
      

  2.   

    说明判断语句不正确呗,con.GetType().ToString()与"System.Web.UI.WebControls.TextBox"不相等
      

  3.   

    逐步测试,先看是否循环,再看判断语句正确与否,加几个Response.Write语句测试一下
      

  4.   

    Page.Controls[1].Controls
    这句到底什么意思啊??
      

  5.   

    foreach 是在哪个时候执行的?
      

  6.   

    返回页面上的控件,你的这些诸如textbox的控件是放在controls(1) 集合中的,你可以response出page.controls 来看看,就会明白了
      

  7.   

    跟踪一下con.GetType().ToString()是什么内容?
      

  8.   

    跟踪一下 System.Web.UI.Control con in Page.Controls[1].Controls.Count是不是0
      

  9.   

    刚才看了一下Page.Controls[1].Controls.Count确实为零,但是我的窗体里有好多控件阿,文本框也有好几个,这个循环我专门放在一个清空功能的按钮的CLICK事件里的
      

  10.   

    Page.Controls[0].Controls.Count还是0 为什么啊
      

  11.   

    这段小程序可以解答一下你的问题,我希望
    ==================
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
         
            For Each c As Control In Page.Controls
                Response.Write(c.ToString & "<br>")
            Next
        End Sub
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            For Each c As Control In Page.Controls(1).Controls
                If TypeOf c Is TextBox Then
                    Dim t As TextBox = CType(c, TextBox)
                    t.Text = ""
                End If
            Next
        End Sub
      

  12.   

    我把它改成Page.Controls[2].Controls.Count就好了,这个后面的数字什么意思啊??还有怎么终结帖子阿??
      

  13.   

    关键是这里,Page.Controls[index].Controls,碰到过,用1不行,用2的。就1,2,3都检测一下,
    如果Page.Controls[1].Controls.Count > n ,那么就是1了,要不继续......
    foreach (System.Web.UI.Control con in Page.Controls[index].Controls)
    {
    if (con.GetType().Name == "TextBox")
    ((System.Web.UI.WebControls.TextBox)con).Text="";
     }
      

  14.   

    你这样输出来就知道了,这个是controlcollection集合
            For Each c As Control In Page.Controls
                Response.Write(c.ToString & "<br>")
            Next
      

  15.   

    private void ClearCtrl(Control ccAny)
    {
    int i, size;
    size =ccAny.Controls.Count;
    for (i=0; i<size; i++) 

    if (ccAny.Controls[i] is CheckBoxList)
    {
    (ccAny.Controls[i] as CheckBoxList).ClearSelection();
    }
    else
    {
    if (ccAny.Controls[i].HasControls())
    ClearCtrl(ccAny.Controls[i]);
    else 
    {
    if (ccAny.Controls[i] is TextBox)
    (ccAny.Controls[i] as TextBox).Text = "";
    }
    }
    }
    }
      

  16.   

    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="";
    }
    }
    }
    }
      

  17.   

    问题的原因,首先每个ASPX页面上有一个form.form里会有若干控件,遍历这些控件时,需要注意的问题是Table,如果Table有runat="server"标记,那么这里就多了一层嵌套,所以在遍历这些控件的时候需要遍历某些子控件,也就是要遍历一颗树,所以应该按照树的算法来写页面控件的遍历.
      

  18.   

    <script language=javascript>
    <!--
    function ClearText()
    {
    var textBoxs = document.getElementsByTagName("input");
    for(var i=0; i<textBoxs.length; i++)
    {
    if(textBoxs[i].type=="INPUT")
    {
    textBoxs[i].value="";
    }
    }
    }
    //-->
    </script>
      

  19.   

    請將上面的if(textBoxs[i].type=="INPUT")
    改為
    if(textBoxs[i].type=="text")