如何在C#中的FOR循环中使用ASP.NET的标签ID?

时间:2016-05-02 10:12:44

标签: c# asp.net

如果标题不够清晰,请注意。 我的asp.Net表单中有大约20个Label和20个TextBox,并且所有这些都是错误的Visible属性。

我愿意将某些Visible属性更改为true,具体取决于给定的数字。我如何使用这些标签和文本框' FOR循环中的ID?

我已经将标签命名为:Label1,Label2,Label3等。

p.s:ParameterCount的值从1到20不等。

for (int i = 0; i <= parameterCount; i++)
{
    Label[i].Visible = True; //I know it's wrong, but something like this
}

示例1:ParameterCount = 4

(Label1,Label2,Label3,Label4).Visible = True

示例2:参数计数= 2

(Label1,Label2).Visible = True

3 个答案:

答案 0 :(得分:1)

使用Page.FindControl

Label l = this.FindControl($"Label{i}") as Label;

if (l != null)
{
    // use the label `l` here
}

如果标签不是顶部元素,则必须在容器控件中找到它。

请参阅MSDN上的完整示例:How to: Access Server Controls by ID

答案 1 :(得分:1)

只需将您的标签放在一个数组中:

Label[] arr = new Label[] { label1, label5, label10, lable13, label14 };
for (int i = 0; i < ParameterCount; ++i)
   arr[i].Visible = true;

前提是ParameterCount <= arr.Length

答案 2 :(得分:0)

您可以将这些标签或文本框放在asp:Panel

<asp:Panel ID="myPanel" runat="server">
    ... your textboxes and labels come here
</asp:Panel>

然后只需切换此面板的可见性:

myPanel.Visible = true; // or false if you wish