对于这类问题有几个答案,但对我来说似乎都不是很清楚,我对JQuery没有经验,所以我在这里问。
我有一个VB Web应用程序,在Default.aspx中有一堆文本框(使用Visual Web Designer 2010 Express中的基本模板)。如果可能的话,我想使用某种VB解决方案迭代这些文本框,并在用户按下按钮时清除它们。我尝试过这样的事情:
Dim cControl As Control
For Each cControl in Me.Controls
If cControl Is TextBox Then
cControl.Text = ""
EndIf
Next
但这不起作用。如果有人能指出我正确的方向,那将是伟大的。谢谢!
答案 0 :(得分:2)
您的代码有2个问题。首先,使用代码:
For Each cControl in Me.Controls
...
Next
只有当所有文本框都在主页上,而不是在面板上,在组框中等时,才会起作用。
其次,代码
If cControl is Textbox Then
将失败,因为cControl与Textbox不完全相同。您想检查cControl的类型是否为Textbox。代码的递归解决方案是:
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)
答案 1 :(得分: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
答案 2 :(得分:0)
你需要递归循环,因为某些控件可能嵌套在其他控件中,比如Panels等。
public void ClearTextBoxes(Control ctrl)
{
foreach (Control childCtrl in ctrl.Controls)
{
if (childCtrl is TextBox)
{
((TextBox)ctrl).Text = String.Empty;
}
ClearTextBoxes(childCtrl);
}
}