如题。
若是一个一个赋值清空,何其麻烦!

解决方案 »

  1.   

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

  2.   

    剛寫好的: Protected Sub ClearTable(ByVal table As System.Web.UI.HtmlControls.HtmlTable)            Dim objRow As System.Web.UI.HtmlControls.HtmlTableRow
                Dim objCell As System.Web.UI.HtmlControls.HtmlTableCell
                Dim objControl As Object            Dim objBox As System.Web.UI.WebControls.TextBox
                Dim objddl As System.Web.UI.WebControls.DropDownList
                Dim objCheck As System.Web.UI.WebControls.CheckBox
                Dim objGrid As System.Web.UI.WebControls.DataGrid
                Dim objTable As System.Web.UI.HtmlControls.HtmlTable            For Each objRow In table.Controls
                    For Each objCell In objRow.Cells
                        For Each objControl In objCell.Controls
                            Select Case (objControl.GetType.ToString())
                                Case "System.Web.UI.LiteralControl"
                                    
                                Case "System.Web.UI.WebControls.TextBox"
                                    objBox = CType(objControl, TextBox)
                                    objBox.Text = ""
                                Case "System.Web.UI.WebControls.DropDownList"
                                    objddl = CType(objControl, DropDownList)
                                    objddl.SelectedIndex = -1
                                Case "System.Web.UI.WebControls.CheckBox"
                                    objCheck = CType(objControl, CheckBox)
                                    objCheck.Checked = False
                                Case "System.Web.UI.WebControls.DataGrid"
                                    objGrid = CType(objControl, System.Web.UI.WebControls.DataGrid)
                                    Dim dt As DataTable = New DataTable
                                    objGrid.DataSource = Nothing
                                    objGrid.DataBind()
                                    'objGrid.Dispose()
                                Case "System.Web.UI.HtmlControls.HtmlTable"
                                    objTable = CType(objControl, System.Web.UI.HtmlControls.HtmlTable)
                                    ClearTable(objTable)
                            End Select
                        Next
                    Next
                Next
            End Sub
      

  3.   

    HtmlForm MyFrom;
    MyFrom=FindHtmlForm(this);
    for(int i=0;i<MyFrom.Controls.Count;i++)
    {
    if(MyFrom.Controls[i].ToString().IndexOf("TextBox")>0)
    {
    ((TextBox)MyFrom.Controls[i]).Text="";
    }
    }
      

  4.   

    foreach(Control control in Page.FindControl("Form1").Controls)
    {
    if (control.GetType().ToString().Equals("System.Web.UI.WebControls.TextBox"))
    {
    ((TextBox)control).Text="";
    }
    }
      

  5.   

    我用一楼的代码,不知为何点击按钮后,textbox框内容没变?
    代码如下:
    private void Button1_Click(object sender, System.EventArgs e)
    {
    foreach( Control control in this.Controls)
    {
    if( control is TextBox)
    {
    ((TextBox)control).Text = "";
    }
    }
    Label1.Text = TextBox1.GetType().ToString();
    }
    怎么看都没错啊。
      

  6.   

    特别注明:这个textbox都是放在web上的。
      

  7.   

    我用如下代码显示control的类型,显示如下:
    foreach( Control ctr in this.Controls)
    {
    ListBox1.Items.Add(ctr.GetType().ToString());
    }
    如下:
    System.web.ui.literalControl
    System.web.ui.htmlcontrol
    System.web.ui.ResourceBasedLiteralControl牙根就不是System.Web.UI.WebControls.TextBox
      

  8.   

    记得好像以前也有人问过这个问题,似乎是将textbox编号(默认生成的序号),TextBox1,TextBox2...然后用TextBox+i来清空的,具体怎么实现忘记了。期待更好的方法
      

  9.   

    c:\inetpub\wwwroot\study\WebForm2.aspx.cs(59): 名称“FindHtmlForm”在类或命名空间“study.WebForm2”中不存在
    楼上的,你的代码
      

  10.   

    修改如下
    for(int i=0;i<this.Controls.Count;i++)
    {
    if(this.Controls[i].ToString().IndexOf("TextBox")>0)
             {
       ((TextBox)this.Controls[i]).Text="";
    }
    }
    调试结果,if里面的语句始终未false(页面有5个textbox)
      

  11.   

    foreach(Control c in Page.Controls[1].Controls)
    {
    if(c.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
    {
    ((System.Web.UI.WebControls.TextBox)c).Text = "这个不是你要的?";
    }
    }如果TextBox放在其它容器里就找不到,需要进一步遍历容器
      

  12.   

    不过那个foreach(Control c in Page.Controls[1].Controls)  里面的1是虾米意思聂?
      

  13.   

    果然, wangrenda(浪人) 的代码正确。
    其它的代码,经检验均未得到理想结果,是不是这些代码只适用于WinForm程序?
      

  14.   

    页面上的控件其实都在HtmlForm这个控件里,所以你需要先找到htmlform,然后在循环,你需要这样写,其中"Form1"是表单的ID,即<form id="Form1" method="post" runat="server">:private void Button1_Click(object sender, System.EventArgs e)
    {
    HtmlForm htmlForm = (HtmlForm)Page.FindControl("Form1");
    if (htmlForm != null)
    {
    foreach( Control control in htmlForm.Controls)
    {
    if( control is TextBox)
    {
    ((TextBox)control).Text = "";
    }
    }
    }
    }