按钮单击时清除多个文本框控件

时间:2013-10-18 17:57:01

标签: asp.net textbox

- 我有一个包含大量文本框的表单。 - 当我点击"清除"我希望他们都重置或将.Text值设置为" &#34 ;; 。我不想写" (Textbox1.text ="&#34 ;;)" 14或15次。 - 请不要让它变得比它需要的更困难。 - 我正在使用asp.net 4.5。

6 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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中获取所有控件:

var pageTextBoxes = FindControl<TextBox>(this);

如果你在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 = "";
  }

答案 2 :(得分:0)

您可以遍历页面上的所有控件并清除那些文本框。这样的事情可能会帮助你开始:

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);

答案 3 :(得分:0)

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

  1. 添加一个html重置按钮,点击该按钮会自动将值重置为最后一个值
  2. 在这里看http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_reset

    1. 第一个在回发后不起作用但你可以使用javascript而不是编写服务器端代码。使用以下方法并传递表单,或者您可以相应地将其更改。
    2. http://www.javascript-coder.com/javascript-form/javascript-reset-form.phtml

答案 4 :(得分:0)

有时你无法在页面中获取所有webcontrol,所以使用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 = "";
            }
        }
    }

答案 5 :(得分:0)

var txt= new List<TextBox>() {TextBox1ID,TextBox2ID };
    foreach(var textBox in txt)
    {
        textBox.Text = string.Empty;
    }

这可能会有所帮助