我不知道我是否在标题中解释了这一点,这就是我想要做的事
(在活动服务器页面上的VB中)
我有5个叫做but1 .....按钮的按钮
现在我有以下代码使它们不可见
but1.Visible=false;
but2.Visible=false;
but3.Visible=false;
but4.Visible=false;
but5.Visible=false,
有没有办法通过使用字符串来访问对象,例如
for(i=i;i<6;i++
items("but"+str(i)).visible=false
答案 0 :(得分:2)
将它们放在像ASP.NET Panel
这样的容器控件中,当它们具有相似的含义时,它会呈现为DIV:
<asp:Panel id="Panel1" runat="server" CssClass="ButtonPanel">
<asp:TextBox id="Txt1" runat="server" />
<asp:Button id="Btn1" Text="click me" OnClick="Button_Click" runat="server"/><br />
<asp:TextBox id="Txt2" runat="server" />
<asp:Button id="Btn2" Text="click me" OnClick="Button_Click" runat="server"/><br />
<asp:TextBox id="Txt3" runat="server" />
<asp:Button id="Btn3" Text="click me" OnClick="Button_Click" runat="server"/>
</asp:Panel>
然后你可以用这种方式找到并循环它们:
Dim allPanelButtons = Panel1.Controls.OfType(Of Button)()
For Each btn In allPanelButtons
btn.Visible = False
Next
OfType
也适用于整个页面,但不会在它们嵌套在子控件中时(例如GridView
)。
您的问题有点不清楚,当然,当他们以声明方式添加到页面ControlCollection
时,您可以直接通过他们的名称(实际上是ID)引用控件:
Btn1.Visible = False
是的,它也适用于按ID搜索它们,但是我不推荐这种方法,因为它不是故障安全的,并且可能导致将来出现的问题在运行时。所以只是为了完整起见:
For i = 1 To 6
Dim control = FindControl("Btn" & i)
If control IsNot Nothing AndAlso TypeOf control Is Button Then
control.Visible = False
End If
Next