У нас есть проект, который должен собрать данные опроса. На одной конкретной странице веб-сайта есть 21 вопрос по шкале от 1 до 5, каждый из которых пользователь выбирает по одному переключателю для каждого вопроса в таблице.
Опрос кодируется в VB.NET. Данные отправляются в базу данных SQL. Все переключатели имеют одинаковое название, поэтому в вопросе меняется только номер - думая, что это облегчит кодирование на стороне сервера. В коде позади я надеялся сделать что-то для эффекта:
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
Мое исследование говорит мне, что без какого-либо специального кодирования невозможно делать то, что я хочу. Я встречал упоминания о массивах в связи с этими типами вопросов в других местах, но я недостаточно знаком с массивами, чтобы понять, как они будут работать в этом случае.
Должен ли я создать 21 набор утверждений If ... Else? (
Вот как выглядит HTML для вопроса, если это имеет значение:
<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>
Кроме того, я знаю о RadioButtonLists, но в этом случае мне нужно по-особому стилизовать переключатели и не могу заставить их работать, когда ASP отображает элементы списка.
Обновлено, чтобы показать, что я использовал его в своем коде
Я не уверен, как StackOverflow работает, чтобы показать, как что-то работает для вас, но я просто хотел добавить это на случай, если другие придут сюда в поисках ответа. В основном, я использовал код ниже:
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}, _
...
}
Я создал массив с именами групп переключателей:
Dim radioButtonGroupNames() As String = { _
"@LWHFQ_Q1", _
"@LWHFQ_Q2", _
...
}
Тогда в моем цикле For ... я использовал:
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