-1

-我有一个包含大量文本框的表单。- 当我单击“清除”时,我希望它们全部重置或将它们的 .Text 值设置为“”;. 我宁愿不必写“ (Textbox1.text=""; )” 14 或 15 次。-请不要让它变得比它需要的更困难。-我正在使用 asp.net 4.5。

4

6 回答 6

1

I created two textboxes Textbox1 and Textbox2. Below is the code to clear them.

 protected void Button1_Click(object sender, EventArgs e)
    {
        var tbs = new List<TextBox>() {TextBox1,TextBox2 };
        foreach(var textBox in tbs)
        {
            textBox.Text = "";
        }
    }
于 2013-10-18T18:22:57.187 回答
1

I have this handy method that enumerates all child controls of specified type on some parent control, no matter if they are on some container control deeper in hierarchy :

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

So in your case you can get all controls in Page_Load :

var pageTextBoxes = FindControl<TextBox>(this);

if you do that in Page_Load, then this is current Page and you will get all Text Boxes on page, so just clear it :

  foreach (var txtControl in pageTextBoxes)
  {
    txtControl.Text = "";
  }

If you want some more conditions, for example if TextBox ID starts with LeftControl :

  foreach (var txtControl in pageTextBoxes.Where(tx => tx.ID.StartsWith("LeftControl")))
  {
    txtControl.Text = "";
  }
于 2013-10-18T18:23:24.453 回答
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);
于 2013-10-18T18:01:12.623 回答
0

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

  1. 添加一个html重置按钮,点击按钮会自动将值重置为最后的值

在这里看到它http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_reset

  1. 第一个在回发后将不起作用,但您可以使用 javascript 来代替编写服务器端代码。使用以下方法并传递您的表单,或者您可以相应地更改它。

http://www.javascript-coder.com/javascript-form/javascript-reset-form.phtml

于 2013-10-18T20:11:46.187 回答
0

有时您无法获取页面中的所有 Web 控件,因此使用 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 = "";
            }
        }
    }
于 2014-03-21T09:31:36.410 回答
0
var txt= new List<TextBox>() {TextBox1ID,TextBox2ID };
    foreach(var textBox in txt)
    {
        textBox.Text = string.Empty;
    }

这可能会有所帮助

于 2015-02-20T09:53:15.720 回答