Как я могу получить выбранные значения для списка радиокнопок
Я работаю над генератором случайных викторин для Sharepoint, и я застрял в небольшой проблеме, когда проверяю, соответствует ли выбранный ответ правильному ответу.
у меня есть список радиокнопок, объявленный глобальным.
public static RadioButtonList[] RadioButtonList = new RadioButtonList[5]; //5 elements are enough, as i'll stick to a 5-question quiz for now.
Затем, при заполнении выпадающего списка, я создаю новый объект и добавляю элементы (ответы) в список.
for (var i=0; ... )
...
RadioButtonList[i] = new RadioButtonList();
RadioButtonList[i].Items.Add(SPListItemCollection[index]["Column"].ToString());
...
До сих пор все отлично работает. Все вышеперечисленное происходит в событии click для кнопки, которая генерирует код.
Моя проблема возникает в следующем событии, сделанном для кнопки Сравнить. Я пытаюсь сравнить выбранное значение радиокнопки с другим значением, хранящимся в метке, которая представляет правильный ответ. Дело в том, что не работает следующее условие:
for (var index ... )
....
if (RadioButtonList[index].SelectedValue.Equals(label_Response[index].Text))
...
"RadioButtonList[index].SelectedValue" всегда пусто, и я получаю исключение NullReferenceException при отладке.
Если кто-то может помочь мне решить эту проблему, или знает лучшее решение, я буду очень благодарен.
Заранее спасибо, Калин.
1 ответ
Это будет работать, только если будут выбраны ВСЕ радиокнопки. Вы идете по каждому радио-кнопке, когда только один может быть выбран за один раз. Попробуйте проверить не ноль.
for (var index ... )
....
if (RadioButtonList[index].SelectedValue!=null && RadioButtonList[index].SelectedValue.Equals(label_Response[index].Text))
...
Другое дело, как вы можете быть уверены, что label_Response[index]
будет соответствовать RadioButtonList[index]
? Это массивное предположение ИМХО.