遍历不同的下拉列表
Looping through different dropdown lists
我在一个页面上有多个控件,它们都很相似并且都已编号。例如,我有多个月份控件,如下所示:
Replacement1MonthDropDownList
Replacement2MonthDropDownList
Replacement3MonthDropDownList
- 等等
但是当我有适用于所有控件的通用代码时,我需要一个像这样的大 Select Case
语句:
Select Case Count
Case 1
Call Me.FillReplacements(rf.Replacements(0), Me.Replacement1MonthDropDownList, Me.Replacement1AmountTextBox, Me.ReplacementSaveButton)
Case 2
Call Me.FillReplacements(rf.Replacements(0), Me.Replacement1MonthDropDownList, Me.Replacement1AmountTextBox, Me.ReplacementSaveButton)
Call Me.FillReplacements(rf.Replacements(1), Me.Replacement2MonthDropDownList, Me.Replacement2AmountTextBox, Me.SplitButton1)
是否可以遍历控件并通过名称获取它们——只需将名称中的数字替换为我循环中的当前 Count
?
抱歉,我是 Visual Basic 的新手! :S
是的,你可以。 Page
class(Me
,在本例中)有一个 FindControl
方法,允许您按名称查找控件。因此,例如,您可以这样做:
Dim monthControl As Control = Me.FindControl("Replacement" & Count.ToString() & "MonthDropDownList")
Dim splitControl As Control = Me.FindControl("SplitButton" & Count.ToString())
如果您需要将它们转换为更具体的类型,您可以使用 DirectCast
。例如:
Dim monthControl As DropDownList = DirectCast(Me.FindControl("Replacement" & Count.ToString() & "MonthDropDownList"), DropDownList)
或者,也许更好的是,您可以制作一个控件数组,以便您可以通过索引访问它们。例如,如果您定义了这样一个数组:
Private monthControls() As DropDownList = {Replacement1MonthDropDownList, Replacement2MonthDropDownList, Replacement3MonthDropDownList}
然后你可以像这样通过索引访问它:
Dim currentMonthControl As DropDownList = monthControls(Count)
我在一个页面上有多个控件,它们都很相似并且都已编号。例如,我有多个月份控件,如下所示:
Replacement1MonthDropDownList
Replacement2MonthDropDownList
Replacement3MonthDropDownList
- 等等
但是当我有适用于所有控件的通用代码时,我需要一个像这样的大 Select Case
语句:
Select Case Count
Case 1
Call Me.FillReplacements(rf.Replacements(0), Me.Replacement1MonthDropDownList, Me.Replacement1AmountTextBox, Me.ReplacementSaveButton)
Case 2
Call Me.FillReplacements(rf.Replacements(0), Me.Replacement1MonthDropDownList, Me.Replacement1AmountTextBox, Me.ReplacementSaveButton)
Call Me.FillReplacements(rf.Replacements(1), Me.Replacement2MonthDropDownList, Me.Replacement2AmountTextBox, Me.SplitButton1)
是否可以遍历控件并通过名称获取它们——只需将名称中的数字替换为我循环中的当前 Count
?
抱歉,我是 Visual Basic 的新手! :S
是的,你可以。 Page
class(Me
,在本例中)有一个 FindControl
方法,允许您按名称查找控件。因此,例如,您可以这样做:
Dim monthControl As Control = Me.FindControl("Replacement" & Count.ToString() & "MonthDropDownList")
Dim splitControl As Control = Me.FindControl("SplitButton" & Count.ToString())
如果您需要将它们转换为更具体的类型,您可以使用 DirectCast
。例如:
Dim monthControl As DropDownList = DirectCast(Me.FindControl("Replacement" & Count.ToString() & "MonthDropDownList"), DropDownList)
或者,也许更好的是,您可以制作一个控件数组,以便您可以通过索引访问它们。例如,如果您定义了这样一个数组:
Private monthControls() As DropDownList = {Replacement1MonthDropDownList, Replacement2MonthDropDownList, Replacement3MonthDropDownList}
然后你可以像这样通过索引访问它:
Dim currentMonthControl As DropDownList = monthControls(Count)