We have a project that needs to gather survey data. On one particular page of the website, there are 21 questions each with a scale of 1-5 where the user selects one radio button for each question in the table.
The survey is being coded in VB.NET. The data submits to an SQL database. All the radio buttons are similarly named, so only the number changes for the question -- thinking this would make it easier on the back end coding. In the code behind I was hoping to do something to the effect:
For i = 1 To 21
If rbLWHFQ_Q(i)A1.Checked Then
myCommand.Parameters.AddWithValue("@LWHFQ_Q(i)", rbLWHFQ_Q(i)_A1.Value)
ElseIf rbLWHFQ_Q(i)_A2.Checked Then
myCommand.Parameters.AddWithValue("@LWHFQ_Q(i)", rbLWHFQ_Q(i)_A2.Value)
ElseIf rbLWHFQ_Q(i)_A3.Checked Then
myCommand.Parameters.AddWithValue("@LWHFQ_Q(i)", rbLWHFQ_Q(i)_A3.Value)
ElseIf rbLWHFQ_Q(i)_A4.Checked Then
myCommand.Parameters.AddWithValue("@LWHFQ_Q(i)", rbLWHFQ_Q(i)_A4.Value)
ElseIf rbLWHFQ_Q(i)_A5.Checked Then
myCommand.Parameters.AddWithValue("@LWHFQ_Q(i)", rbLWHFQ_Q(i)_A5.Value)
ElseIf rbLWHFQ_Q(i)_A6.Checked Then
myCommand.Parameters.AddWithValue("@LWHFQ_Q(i)", rbLWHFQ_Q(i)_A6.Value)
ElseIf rbLWHFQ_Q(i)_A7.Checked Then
myCommand.Parameters.AddWithValue("@LWHFQ_Q(i)", rbLWHFQ_Q(i)_A7.Value)
ElseIf rbLWHFQ_Q(i)_A8.Checked Then
myCommand.Parameters.AddWithValue("@LWHFQ_Q(i)", rbLWHFQ_Q(i)_A8.Value)
ElseIf rbLWHFQ_Q(i)_A9.Checked Then
myCommand.Parameters.AddWithValue("@LWHFQ_Q(i)", rbLWHFQ_Q(i)_A9.Value)
ElseIf rbLWHFQ_Q(i)_A10.Checked Then
myCommand.Parameters.AddWithValue("@LWHFQ_Q(i)", rbLWHFQ_Q(i)_A10.Value)
End If
Next i
My research tells me that it's not possible to do what I am wanting without some special coding. I've seen mention of arrays in relation to these types of questions elsewhere, but I'm not familiar enough with arrays to see how they would work in this case.
Am I just going to have to create 21 sets of If...Else statements? :(
Here's what the HTML looks like for a question, if that matters:
<tr class="statement220">
<th><label for="rbLWHFQ_Q1_A1">1. Causing swelling in your ankles or legs?</label></th>
<td title="0" >
<input id="rbLWHFQ_Q1_A1" name="rbLWHFQ_Q1" type="radio" value="0" runat="server" />
</td>
<td title="1" >
<input id="rbLWHFQ_Q1_A2" name="rbLWHFQ_Q1" type="radio" value="1" runat="server" />
</td>
<td title="2" >
<input id="rbLWHFQ_Q1_A3" name="rbLWHFQ_Q1" type="radio" value="2" runat="server" />
</td>
<td title="3" >
<input id="rbLWHFQ_Q1_A4" name="rbLWHFQ_Q1" type="radio" value="3" runat="server" />
</td>
<td title="4" >
<input id="rbLWHFQ_Q1_A5" name="rbLWHFQ_Q1" type="radio" value="4" runat="server" />
</td>
<td title="5" >
<input id="rbLWHFQ_Q1_A6" name="rbLWHFQ_Q1" type="radio" value="5" runat="server" />
</td>
</tr>
As an aside, I know about RadioButtonLists, but in this case I'm needing to style the radio buttons in a special way and can't get it to work when ASP renders the list items.
Updated to show I used it in my code I'm not sure how StackOverflow works with regards to showing how something worked for you, but I just wanted to add this in case others come here looking for the answer. Basically, I used the code below:
Dim radioButtons()() As HtmlInputRadioButton = { _
New HtmlInputRadioButton() {rbLWHFQ_Q1_A1, rbLWHFQ_Q1_A2, rbLWHFQ_Q1_A3, rbLWHFQ_Q1_A4, rbLWHFQ_Q1_A5, rbLWHFQ_Q1_A6}, _
New HtmlInputRadioButton() {rbLWHFQ_Q2_A1, rbLWHFQ_Q2_A2, rbLWHFQ_Q2_A3, rbLWHFQ_Q2_A4, rbLWHFQ_Q2_A5, rbLWHFQ_Q2_A6}, _
...
}
I created an array with the radio button group names:
Dim radioButtonGroupNames() As String = { _
"@LWHFQ_Q1", _
"@LWHFQ_Q2", _
...
}
Then in my For...Loop I used:
For i = 0 To 20
If radioButtons(i)(0).Checked Then
myCommand.Parameters.AddWithValue(radioButtonGroupNames(i), radioButtons(i)(0).Value)
ElseIf radioButtons(i)(1).Checked Then
myCommand.Parameters.AddWithValue(radioButtonGroupNames(i), radioButtons(i)(1).Value)
ElseIf radioButtons(i)(2).Checked Then
myCommand.Parameters.AddWithValue(radioButtonGroupNames(i), radioButtons(i)(2).Value)
ElseIf radioButtons(i)(3).Checked Then
myCommand.Parameters.AddWithValue(radioButtonGroupNames(i), radioButtons(i)(3).Value)
ElseIf radioButtons(i)(4).Checked Then
myCommand.Parameters.AddWithValue(radioButtonGroupNames(i), radioButtons(i)(4).Value)
ElseIf radioButtons(i)(5).Checked Then
myCommand.Parameters.AddWithValue(radioButtonGroupNames(i), radioButtons(i)(5).Value)
End If
Next i