Работя върху генератор на случайни викторини за 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());
...
Досега всичко работи добре. Всичко това се случва в събитие за щракване на бутона, който генерира кода.
Моят проблем идва в следното събитие, направено забутона за сравнение. Опитвам се да сравня избраната стойност на радио бутона с друга стойност, запазена в етикет, която представлява правилния отговор. Работата е там, че следното условие не работи:
for (var index ... )
....
if (RadioButtonList[index].SelectedValue.Equals(label_Response[index].Text))
...
"RadioButtonList [index] .SelectedValue" е винаги празен и получавам NullReferenceException при отстраняване на грешки.
Ако някой може да ми помогне да решим този въпрос, или знае по-добро решение, ще бъда много благодарен.
Благодаря предварително, Калин.
Отговори:
0 за отговор № 1Това ще работи само ако са избрани ВСИЧКИ радиобутони. Вие избирате всеки радиобутон, когато само един може да бъде избран едновременно. Опитайте да проверите дали не е нула.
for (var index ... )
....
if (RadioButtonList[index].SelectedValue!=null && RadioButtonList[index].SelectedValue.Equals(label_Response[index].Text))
...
Друго нещо, как можете да бъдете сигурни label_Response[index]
ще съвпадне RadioButtonList[index]
? Това е масивно предположение IMHO.