Asp.net 在单击按钮时清除多个文本框控件

Asp.net 在单击按钮时清除多个文本框控件,asp.net,textbox,Asp.net,Textbox,-我有一张有很多文本框的表格。 -单击“清除”时,我希望它们全部重置或将其.Text值设置为。我宁愿不必写Textbox1.text=;14或15次。 -请不要让它变得比需要的更困难。 -我使用的是asp.net 4.5。您可以循环浏览页面上的所有控件并清除文本框。类似的内容可能会帮助您开始: public void ClearTextBoxes(Control parent) { foreach (Control c in parent.Controls) {

-我有一张有很多文本框的表格。 -单击“清除”时,我希望它们全部重置或将其.Text值设置为。我宁愿不必写Textbox1.text=;14或15次。 -请不要让它变得比需要的更困难。
-我使用的是asp.net 4.5。

您可以循环浏览页面上的所有控件并清除文本框。类似的内容可能会帮助您开始:

public void ClearTextBoxes(Control parent)
{
    foreach (Control c in parent.Controls)
    {
        if ((c.GetType() == typeof(TextBox)))
        {
            // Clear the text box
            ((TextBox)(c)).Text = "";
        }
    }
}
所以你可以点击按钮调用这个函数

ClearTextBoxes(this);

我创建了两个文本框Textbox1和Textbox2。下面是清除它们的代码

 protected void Button1_Click(object sender, EventArgs e)
    {
        var tbs = new List<TextBox>() {TextBox1,TextBox2 };
        foreach(var textBox in tbs)
        {
            textBox.Text = "";
        }
    }

我有一个简便的方法,可以枚举某个父控件上指定类型的所有子控件,无论它们是否位于层次结构中更深的某个容器控件上:

public List<T> FindControl<T>(Control holder) where T : Control
{
  var result = new List<T>();
  foreach (Control control in holder.Controls)
  {
    if (control is T)
      result.Add(control as T);
    result.AddRange(FindControl<T>(control));
  }
  return result;
}
如果您在Page_Load中执行此操作,则这是当前页面,您将获得页面上的所有文本框,因此只需清除它:

  foreach (var txtControl in pageTextBoxes)
  {
    txtControl.Text = "";
  }
如果需要更多条件,例如,如果TextBox ID以LeftControl开头:

  foreach (var txtControl in pageTextBoxes.Where(tx => tx.ID.StartsWith("LeftControl")))
  {
    txtControl.Text = "";
  }

您可以采取以下两种方法之一:

添加html重置按钮,单击该按钮将自动将值重置为上次值 看到这里了吗

第一个在回发后不起作用,但您可以使用javascript来完成,而不是编写服务器端代码。使用以下方法并传递您的表单,或者您可以相应地将其更改为。
有时您无法在一个页面中获取所有网络控件,因此请使用Request.Form,您可以获取所有控件并清除控件。这可能会对您有所帮助

 public void ClearTextboxes()
    {
        foreach (string control in Request.Form.AllKeys)
        {
            Control pageControl = Page.FindControl(control);
            if (pageControl is TextBox)
            {
                TextBox textBox = (TextBox)pageControl;
                textBox.Text = "";
            }
        }
    }

这可能会有所帮助

您是希望清除仅为客户端,还是希望它执行回发和清除?
 public void ClearTextboxes()
    {
        foreach (string control in Request.Form.AllKeys)
        {
            Control pageControl = Page.FindControl(control);
            if (pageControl is TextBox)
            {
                TextBox textBox = (TextBox)pageControl;
                textBox.Text = "";
            }
        }
    }
var txt= new List<TextBox>() {TextBox1ID,TextBox2ID };
    foreach(var textBox in txt)
    {
        textBox.Text = string.Empty;
    }