提交后清除所有字段

问题描述:

我在asp.net应用程序中有很多文本框,并提交它们的值后,我想清除所有领域时,它再次加载?提交后清除所有字段

你需要编写,并呼吁类似functionsubmit

public static void EmptyTextBoxes(Control parent) 
    { 
     foreach (Control c in parent.Controls) { 
     if (c.GetType() == typeof(TextBox)) 
     { 
      ((TextBox)(c)).Text = string.Empty;    
     } 
     } 
    } 

参考

http://www.tek-tips.com/faqs.cfm?fid=6470

您可以使用JavaScript形式的reset()方法或循环引出所有文本框并将Text属性设置为空字符串。

foreach(var control in this.Controls){ 
    TextBox tb = control as TextBox; 
    if (tb != null) 
    { 
     tb.Text = string.Empty; 
    } 
} 

你可以在页面中做到这一点:

foreach (var tb in Controls.OfType<TextBox>()) 
{ 
    tb.Text = null; 
} 

如果需要清除它们的整个层次,从页面调用一次这样的:ClearTextBoxes(this);

而这里的功能:

private void ClearTextBoxes(Control c) { 
    foreach (var tb in c.Controls.OfType<TextBox>()) 
    { 
    tb.Text = null; 
    } 
    foreach (var control in c.Controls) { 
    ClearTextBoxes(control); //Recurse down to children 
    } 
} 

public static Control[] FlattenHierachy(Control root) 
{ 
    List<Control> list = new List<Control>(); 
    list.Add(root); 
    if (root.HasControls()) 
    { 
     foreach (Control control in root.Controls) 
     { 
      list.AddRange(FlattenHierachy(control)); 
     } 
    } 
    return list.ToArray(); 
} 

private void ClearTextBoxes() 
{ 
    Control[] allControls = FlattenHierachy(Page); 
    foreach (Control control in allControls) 
    { 
     TextBox textBox = control as TextBox; 
     if (textBox != null) 
     { 
      textBox.Text = ""; 
     } 
    } 
} 

此代码将收集所有文本框在一个列表将他们的textproperty设置为“”。

那么你也可以设置字段不使用视图状态,这将意味着在性能上的提升,虽然很小,但仍然是一种提升。 同样,您可以对同一页或server.transfer执行response.redirect。
如果这两种解决方案不适合你,你可以使用textbox.text = string.empty和dropdowlist.clearselection。他们可能没有你想要的那么快,他们更优雅。

没有经过充分测试解决方案:在初始化或LoadViewState事件处理

不能使用ME.ViewState.Clear()?

或者它可能是Page.Viewstate.Clear(),甚至Page.ClearChildViewState()...

对不起 - 还没有尝试过在愤怒....

+0

只写这条线将重置所有字段。 this.form1。ID =“newid”; – Adeel 2010-03-01 12:47:59

+0

可能很有用,除非表单ID被引用(尽管出于显而易见的原因,在ASP.NET中,这往往不是这种情况) – CJM 2010-03-01 14:14:00

这清除像文本框,复选框形式的所有控件,单选按钮

你可以添加你想要不同类型..

private void ClearTextBoxes(Control control) 
    { 
     foreach (Control c in control.Controls) 
     { 
      if (c is TextBox) 
      { 
       ((TextBox)c).Clear(); 
      } 

      if (c.HasChildren) 
      { 
       ClearTextBoxes(c); 
      } 


      if (c is CheckBox) 
      { 

       ((CheckBox)c).Checked = false; 
      } 

      if (c is RadioButton) 
      { 
       ((RadioButton)c).Checked = false; 
      } 
     } 
    } 

创建一个函数调用cleardata()

void cleardata() 
{ 
    textbox1.Clear(); 
    textbox2.Clear(); 
    textbox3.Clear(); 
    textbox4.Clear(); 
} 

并随时调用此函数。

这是一个老问题,但我只是想补充以下,以防控件处于组框,你能做到这样,那么:

 foreach (Control c in this.form.Controls) 
     { 
      //Tests each control to see if it is a GroupBox 
      if (c is GroupBox) 
      { 
       clearRadioButtons(c.Controls); 
       clearListBox(c.Controls); 
       resetDateTime(c.Controls); 
       clearTextBoxes(c.Controls); 
       clearComboBoxes(c.Controls); 
      } 
     }  
    public static void clearTextBoxes(Control.ControlCollection controls) 
    { 
     //Loops through all controls on form 
     foreach (Control c in controls) 
     { 
      //Tests each control to see if it is a textbox 
      if (c is TextBox) 
      { 
       //Converts to useable format and clears textboxes 
       var text = (TextBox)c; 
       text.Clear(); 
      } 
     } 
    }