2014-02-12 3 views
0

Ниже приведен мой код, я делаю проект на онлайн-экзамене, так как у меня есть модуль вопросов для отображения в этом случае, когда я нажимаю на следующую кнопку, он должен перейти к следующий вопрос, но это не происходит.ASP.NET, код по щелчку следующей кнопки

public partial class Student : System.Web.UI.Page 
    { 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString); 

     int i=1; 
     Session["Number"] = i; 

    protected void Page_Load(object sender, EventArgs e) 
    { 

     Session["Number"] = i++; 
     Label1.Text = Session["Number"].ToString(); 

      con.Open(); 
      SqlCommand cmd = new SqlCommand("Select * from Questions where QuestionNo = '"+Label1.Text+"'", con); 
      SqlDataReader dr = cmd.ExecuteReader(); 
      if (dr.Read()) 
      { 
       Label2.Text = dr["Question"].ToString(); 
       Label3.Text = dr["Ans1"].ToString(); 
       Label4.Text = dr["Ans2"].ToString(); 
       Label5.Text = dr["Ans3"].ToString(); 
       Label6.Text = dr["Ans4"].ToString(); 
      } 
      con.Close(); 

      con.Open(); 
      SqlCommand cmd1 = new SqlCommand("Select * from Answers where QuestionNo = '" + Label1.Text + "'", con); 
      SqlDataReader dr1 = cmd1.ExecuteReader(); 
      if (dr1.Read()) 
      { 
       Label8.Text = dr1["Answer"].ToString(); 
      } 
      con.Close(); 
    } 
    protected void RadioButton1_CheckedChanged(object sender, EventArgs e) 
    { 
     if (RadioButton1.Checked) 
     { 
      Label7.Text = Label3.Text; 
     } 
    } 
    protected void RadioButton2_CheckedChanged(object sender, EventArgs e) 
    { 
     if (RadioButton2.Checked) 
     { 
      Label7.Text = Label4.Text; 
     } 
    } 
    protected void RadioButton3_CheckedChanged(object sender, EventArgs e) 
    { 
     if (RadioButton3.Checked) 
     { 
      Label7.Text = Label5.Text; 
     } 
    } 
    protected void RadioButton4_CheckedChanged(object sender, EventArgs e) 
    { 
     if (RadioButton4.Checked) 
     { 
      Label7.Text = Label6.Text; 
     } 
    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     if (Label7.Text == Label8.Text) 
     { 
      Label9.Text = "Your Answer is correct"; 
     } 
     else 
      Label9.Text = "Your Answer is incorrect"; 
    } 
    protected void Button2_Click(object sender, EventArgs e) 
    { 
     i++; 
     Session["Number"] = i; 
     Response.Redirect("Student.aspx"); 

    } 
} 

ответ

0

Первое, что вы делаете неправильно, как вы пытаетесь сохранить ценности i в вашей сессии. Вы переписываете его каждый раз, когда вы попадаете в метод и, таким образом, получаете одинаковый номер вопроса при каждом нажатии кнопки.

Во-вторых, вы должны параметризовать свои запросы.

При каждом нажатии кнопки вы должны получить значение i со своего сеанса, а затем увеличить его и снова сохранить в сеансе. как:

int i = 0; 
if (Session["Number"] == null) 
{ 
    Session["Number"] = i; 
} 
else 
{ 
    i = Convert.ToInt32(Session["Number"]); 
} 
//Later To increment Session 

Session["Number"] = ++i; //First increments, then assigns the value 

Вы должны также использовать ++i вместо i++ так, что будет хранить значение i перед тем приращением.

+1

@losSebos, спасибо за редактирование, да, это должно быть '==', а не '! ='. – Habib

+0

Этот код работал ... спасибо .. есть еще одна проблема ... если я нажму на следующую кнопку, она перейдет к следующему вопросу, это нормально .. но у меня есть только 5 вопросов в моей базе данных ... но когда я нажмите следующую кнопку после 5-го вопроса на вопрос №. меняется на 6, и он меняется, но вопрос остается прежним ... как остановить эту штуку ... если у меня есть 5 вопросов, тогда это не должно выходить за рамки этого ... помогите мне .. – Ank

1

Так много плохого в этом коде.

  1. Вы всегда должны правильно указывать имена своих переменных.
  2. Не связывайте SQL-запросы, так как причины безопасности, такие как SQL Injection
  3. Чтобы выбрать номер вопроса, а не Label1.Text, вы должны использовать Session["Number"].
  4. Используйте сеанс, когда это было необходимо.
Смежные вопросы