AhmedHosny96 Ответов: 2

Как мне...сравнить выбранные переключатели и ответить в базе данных в ASP.NET и с#


Эй ребята я разрабатываю онлайн экзаменационный сайт с использованием asp.net и c# но на странице result.aspx я хочу сравнить выбранный вариант и ответить в базе данных так что это мой код и он не работает и не отображает ничего

Что я уже пробовал:

// событие щелчка кнопки submitt

охраняемых недействительными Exambutton_Click(объект отправителя, EventArgs в электронной)
{
SqlCommand cmd = new SqlCommand("выберите ответ из [Biology]", con);
SqlDataAdapter da = новый SqlDataAdapter(cmd);
DataTable ddt = новый DataTable();
da.Fill(ДДТ);
если (QuestionGrid.FindControl("Параметр1") == ДДТ.Строки[0]["Ответить"])
{
результат = 1;
resultlabel.Текст = результат.Метод toString();


}

F-ES Sitecore

FindControl возвращает объект, который инкапсулирует элемент управления, если в вашем случае это, вероятно, переключатель. Однако строки[0]["ответ"], вероятно, являются текстом. Вы не можете сравнить объект с текстом, все, что вы хотите сделать, это сравнить выбранное значение, которое представляет Option1, с ответом.

Google, как использовать FindControl, чтобы бросить на особый контроль.

2 Ответов

Рейтинг:
17

Vincent Maverick Durano

Во-первых, сделайте привычкой класть объекты, которые едят ресурсы, такие как SqlConnection, SqlCommand и SqlDataAdapter в операторе using, чтобы гарантировать, что объекты будут правильно утилизированы и закрыты после их использования.

Во-вторых, если ваш QuestionGrid это GridView, то вы не можете просто использовать FindControl() метод непосредственно к нему так как а GridView состоит из Rows и Columns Это означает, что вам нужно сначала перейти к его строкам, прежде чем использовать FindControl.

В-третьих, вы не можете сравнить результат метода FindControl() со строкой. Итак, эта строка if (QuestionGrid.FindControl("Option1") == ddt.Rows[0]["Answer"]) конечно, код не сработает.

Вот что вы можете попробовать:

protected void Exambutton_Click(object sender, EventArgs e)
{
	DataTable dt = new DataTable();
	string sqlStatement = "SELECT Answer FROM [Biology]";
   
        	using(SqlConnection connection = new SqlConnection("Your Connection String from your Web.config")){
           		using(SqlCommand cmd = new SqlCommand(sqlStatement ,connection)){
               	 	cmd.CommandType = CommandType.Text;
					using(SqlDataAdapter da = new SqlDataAdapter(cmd)){
						da.Fill(dt);
						if(dt.Rows.Count > 0){
							int index = 0;
							foreach (GridViewRow row in QuestionGrid.Rows){
								RadioButton rb = (RadioButon) row.FindControl("Option1");
								if(rb != null){
									if(rb.Text == dt.Rows[index]["Answer"]){
										//do something if matched
										rb.Checked = true;
									}
								}
								index++;
							}
						}
						else{
							//No Records found	
						}
					}
        		}
        }
}


AhmedHosny96

большое тебе спасибо брат
1-й это список данных, а не grid-view, но я назвал его Вопросной сеткой
2 й у меня есть четыре переключателя можете ли вы пожалуйста сказать мне как это сделать для других трех переключателей

Vincent Maverick Durano

(1) Если это DataList, то вам все равно придется перебирать элементы DataList.
(2) просто используйте метод FindControl() для доступа к другим Радиокнопкам

AhmedHosny96

Спасибо тебе Су много брат большие объятия.... этот совет мне помог

AhmedHosny96

извините, что спрашиваю вас об этом, но я хочу изменить этот datalist в gridview, так что не могли бы вы помочь?

Vincent Maverick Durano

foreach (DataListItem item in QuestionGrid.Items)
{
    if (itm.ItemType == ListItemType.Item || itm.ItemType == ListItemType.AlternatingItem)
    {
        RadioButton rb = (RadioButon) item.FindControl("Option1");
        //rest of the code here
    }
}

AhmedHosny96

большое тебе спасибо брат

Рейтинг:
1

RmcbainTheThird

предполагаем ли мы здесь, что ваша таблица "биология" содержит только одну строку?


AhmedHosny96

да брат моя таблица здесь биология мне нужно сравнить все 4 радиобуттона с правильным ответом в базе данных а потом вывести результат ?

Vincent Maverick Durano

Пожалуйста, используйте кнопку "Задать вопрос или комментарий", когда просите разъяснений, а не публикуйте их в качестве решения.