2011-08-15 30 views
0

對於這類問題有幾個答案,但它們都不是很清楚,我對JQuery沒有經驗,所以我在這裏問。我有一個VB Web應用程序,其中有一堆文本框在Default.aspx(使用Visual Web Designer 2010 Express中的基本模板)。我想通過使用某種VB解決方案遍歷這些文本框,如果可能的話,並在用戶按下按鈕時清除它們。我試過用這樣的東西:在VB Web App中迭代遍歷文本框

Dim cControl As Control 
For Each cControl in Me.Controls 
    If cControl Is TextBox Then 
     cControl.Text = "" 
    EndIf 
Next 

但這不起作用。如果有人能指出我的方向正確,那會很棒。謝謝!

回答

2

你的代碼有兩個問題。首先,使用代碼:

如果所有的文本框是主要的頁面上
For Each cControl in Me.Controls 
    ... 
Next 

只會工作,而不是在面板上,在一組框等

二,代碼

If cControl is Textbox Then 

將失敗,因爲cControl與Textbox不是完全相同的對象。您想要檢查cControl的類型是否爲文本框。遞歸解決您的代碼將是:

Public Sub ClearTextBoxes (ctrl as Control) 
    If Ctrl.HasChildren Then 
    For each childCtrl as Control in Ctrl.Controls 
     ClearTextBoxes(childCtrl) 
    Next 
    Else 
    If TypeOf Ctrl is TextBox Then 
     DirectCast(Ctrl, TextBox).Text = String.Empty 
    End If 
    End If 
End Sub 

運行的方法,你會再調用:

ClearTextBoxes(Me) 
+0

謝謝!這對我有效。 – Cuthbert

0

除非你有嵌套在某種容器控件的文本框,這應該工作...

Dim cControl As Control 
    For Each cControl In Page.Form.Controls 
     If cControl.GetType().ToString() = "System.Web.UI.WebControls.TextBox" Then 
      CType(cControl, TextBox).Text = "" 
     End If 
    Next 
0

您可以通過遞歸需要循環,因爲某些控件可能嵌套在其他控件,如面板,等等。

public void ClearTextBoxes(Control ctrl) 
{ 
    foreach (Control childCtrl in ctrl.Controls) 
    { 
     if (childCtrl is TextBox) 
     { 
      ((TextBox)ctrl).Text = String.Empty; 
     } 

     ClearTextBoxes(childCtrl); 
    } 
}