[英]Using anonymous objects instead of Dictionary<string, object?> results into compile-time error
[英]Can you access objects by using their names as a string, instead of a object?
我不知道我是否在標題中解釋了這一點,這就是我想要做的。
(在活動服務器頁面上的VB中)
我有5個叫做but1 ..... but2的按鈕。
現在我有以下代碼使它們不可見
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
將它們放在容器控件中,就像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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.