2014-01-13 4 views
0

Тип нового для этого, чтобы вы знали.if statement with SQL

Я делаю викторину в школьном проекте, и когда вы делаете викторину, вы можете выбрать, хотите ли вы более одного правильного ответа. И если это более одного ответа, альтернативы должны быть элементами в клетках других Radiobuttons.

correctAnswer немного сохранен в SQL.

Так что я хочу сделать что-то вроде этого, но если есть способ сказать «если это более одного истинного использовать ответ CheckBox»:

var command2 = new SqlCommand("SELECT * FROM Answer WHERE IdQuestion = @Id", connection); 
command2.Parameters.AddWithValue("@Id", questionid); 

var dataSet = new DataSet(); 
var adapter = new SqlDataAdapter(command2); 
adapter.Fill(dataSet); 

if("correctAnswer" == True) 
{ 
    RadioButtonList.DataSource = dataSet; 
    RadioButtonList.DataTextField = "Answer"; 
    RadioButtonList.DataValueField = "Id"; 
    RadioButtonList.DataBind(); 
} 
else 
{ 
    CheckBoxList.DataSource = dataSet; 
    CheckBoxList.DataTextField = "Answer"; 
    CheckBoxList.DataValueField = "Id"; 
    CheckBoxList.DataBind(); 
} 
+3

Я теряюсь о здесь в вашем коде: 'если ("CorrectAnswer" == TRUE)'. Вы не задаете вопрос? Что делает «correctAnswer» с ним (кроме того, что вы хотите подсчитать, сколько их есть?) –

ответ

0

регулярное C# решение без фантазии запроса:

int nCorrect = 0; 
foreach(DataRow row in ds.Tables[0].Rows) 
    if (Convert.ToBoolean(row["correctAnswer"]) == true) 
     ++nCorrect; 

if(nCorrect > 1) 
    //checkbox 
else 
    //radiobutton 

Возможное решение LINQ:

int nCorrect = ds.Tables[0].AsEnumerable().Sum(
    r => r.Field<bool>("correctAnswer") == true ? 1 : 0 
    );  // ick! 
0

Вы можете рассчитывать количество строк в наборе данных , чтобы проверить, содержит ли он несколько правильных ответов. Однако, как ebyrob, я также потерян в If("correctAnswer" == True). Вам нужно получить ответы, которые являются правильными, а затем подсчитать их.

if(ds !=Null) 
    { 
    if(ds.tables[0].Rows.Count>0) 
    { 
     if(ds.tables[0].Rows.Count>1) 
     { 
     //multiple answer question go for CheckBoxList 
     } 
     else 
     { 
     // Single correct answer . 
     }  

    } 
    } 
+0

Закрыть, но он не ограничивал только правильные ответы в запросе. Вы должны были бы подсчитать, сколько «правильных ответов». –

0

Как только вы заполните свой набор данных, запросите его с помощью linq, чтобы узнать, сколько правильных ответов есть. Если это 1, используйте переключатели. Если это больше 1, используйте флажки. Если это 0, не отображайте вопрос.

1

Я бы сделал это раньше. Вы должны будете найти вопрос где-нибудь.

SELECT * FROM question WHERE [email protected] 

Заменить, что с

SELECT *,(SELECT COUNT(Id) FROM answer WHERE correctAnswer=1 AND IdQuestion=question.Id) FROM question WHERE [email protected] 

, а затем у вас есть еще один элемент в вашей строке, которая содержит ли ваш вопрос несколько правильных ответов или нет.

+0

Может быть, хорошо назвать этот расширенный термин. Положив его после 'select *' (который вы, кажется, рекомендуете), будет трудно узнать, какой номер столбца у него есть. –