Рейтинг:
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
Пожалуйста, используйте кнопку "Задать вопрос или комментарий", когда просите разъяснений, а не публикуйте их в качестве решения.