2013-11-21 172 views
0

我想清除所有文本框。寫的公共職能爲:無法清除文本框

public void clean(Control parent) 
{ 
    try 
    { 
     foreach (Control c in parent.Controls) 
     { 
      TextBox tb = c as TextBox; //if the control is a textbox 
      if (tb != null)//Will be null if c is not a TextBox 
      { 
       tb.Text = String.Empty;//display nothing 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine("{0} Exception caught.", ex); 
    } 
} 
在類頁面

我希望它被稱爲我宣佈:

PublicFunctions pubvar = new PublicFunctions(); 

,我把它作爲

pubvar.clean(Page); 

,但它不是工作......甚至沒有發生錯誤...我的文本框不清除...幫助?

+0

何時何地你打了嗎?另外,你在這裏使用異常處理是毫無意義的。 – James

+0

什麼是頁面的類型?你發送什麼函數? – user2857877

+0

@James即時關閉我的連接到數據庫後,我做了一個GridView綁定後調用它。所有這一切發生時,我點擊保存提交信息...也是沒有意義的?請解釋。 – New2This

回答

0

您應該使用遞歸循環來檢查所有控件。

試試這個代碼

using System; 
using System.Collections.Generic; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public class PublicFunctions 
{ 
    public void Clean(Control parent) 
    { 
     var controls = GetAllControls(parent); 

     foreach (Control c in controls) 
     { 
      TextBox tb = c as TextBox; 
      if (tb != null) 
      { 
       tb.Text = String.Empty; 
      } 
     } 
    } 

    public IEnumerable<Control> GetAllControls(Control parent) 
    { 
     foreach (Control control in parent.Controls) 
     { 
      yield return control; 

      foreach (Control innerControl in control.Controls) 
      { 
       yield return innerControl; 
      } 
     } 
    } 
} 
+0

只是試了一下。這仍然不是清除文本框...我不知道爲什麼... – New2This

+0

你有這個代碼的任何錯誤? –

+1

這不會解決任何問題,OP的代碼應該可以工作。 – James