Solarplex
Solarplex

Reputation: 107

Looping through different dropdown lists

I have multiple controls on a page that are all similar and are all numbered. For instance, I have multiple month controls like this:

But when I have common code that works on all of the controls, I need a big Select Case statement like this:

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)

Is it possible to loop through the controls and get them by name--justreplacing the numbers in the name with the current Count in my loop?

Sorry, I'm very new to Visual Basic! :S

Upvotes: 2

Views: 325

Answers (1)

Steven Doggart
Steven Doggart

Reputation: 43743

Yes, you can. The Page class (Me, in this case) has a FindControl method which allows you to find a control by name. So, for instance, you could do something like this:

Dim monthControl As Control = Me.FindControl("Replacement" & Count.ToString() & "MonthDropDownList")
Dim splitControl As Control = Me.FindControl("SplitButton" & Count.ToString())

If you need to cast them as a more specific type, you could use DirectCast. For instance:

Dim monthControl As DropDownList = DirectCast(Me.FindControl("Replacement" & Count.ToString() & "MonthDropDownList"), DropDownList)

Alternatively, and perhaps preferably, you could make an array of controls so you could access them by index. For instance, if you had an array like this defined:

Private monthControls() As DropDownList = {Replacement1MonthDropDownList, Replacement2MonthDropDownList, Replacement3MonthDropDownList}

Then you could access it by index like this:

Dim currentMonthControl As DropDownList = monthControls(Count)

Upvotes: 2

Related Questions