2010-03-01 118 views

回答

14

你需要編寫,並呼籲類似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

0

您可以使用JavaScript形式的reset()方法或循環引出所有文本框並將Text屬性設置爲空字符串。

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

你可以在頁面中做到這一點:

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 
    } 
} 
0
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設置爲「」。

0

那麼你也可以設置字段不使用視圖狀態,這將意味着在性能上的提升,雖然很小,但仍然是一種提升。 同樣,您可以對同一頁或server.transfer執行response.redirect。
如果這兩種解決方案不適合你,你可以使用textbox.text = string.empty和dropdowlist.clearselection。他們可能沒有你想要的那麼快,他們更優雅。

0

沒有經過充分測試解決方案:在初始化或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

4

這清除像文本框,複選框形式的所有控件,單選按鈕

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

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

創建一個函數調用cleardata()

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

並隨時調用此函數。

0

這是一個老問題,但我只是想補充以下,以防控件處於組框,你能做到這樣,那麼:

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