提问者:小点点

使用循环VB.NET更改具有相似ID的多个控件的属性


我有一个带有各种输入的aspx web表单,包括一个带1-10的下拉框。提交表单时,会看到一个新面板,其中包含10行静态textbox和label控件。默认情况下,这些控件都设置为visible=false。

我想要的是基于在上一个下拉框中选择的数字,即我想要更改为visible=true的控件的行数。除了最后一个字符之外,这些控件的ID对于每一行都是相同的,这是为了反映它们属于哪一行。因此第1行将具有以下内容:

ticketNum_Lbl_1 your_res_Txt_1 title_Txt_1 firstname_Txt_1 surname_Txt_1 ticketNum_Txt_1

我想要的是一个简单的循环,它将检查控件ID末尾的数字,并将其与下拉列表中选择的数字进行比较。

为了清晰起见,下拉列表供用户选择他们想预订的座位数,下面的屏幕将允许用户为他们预订的座位分配姓名。

我已经尝试了几种方法,但显然仍然没有得到它,尽管它可能是沿着以下路线的东西:

    Dim rowsNeeded As Integer = number_of_tickets_Ddl.SelectedValue
        For a = 1 To rowsNeeded
        Me.Controls("ticketNum_Lbl_" & a).Visible = True
        Me.Controls("your_res_Txt_" & a).Visible = True
        Me.Controls("title_Txt_" & a).Visible = True
        Me.Controls("firstname_Txt_" & a).Visible = True
        Me.Controls("surname_Txt_" & a).Visible = True
        Me.Controls("ticketNum_Txt_" & a).Visible = True

    Next

但这会产生一个错误,因为控件引用的是索引(整数),而不是控件的名称或ID(似乎是?)。

感谢任何帮助。


共1个答案

匿名用户

您应该使用FindControl

Me.FindControl("ticketNum_Lbl_" & a).Visible = True