2011-04-15 66 views
0

我正在开发一个使用ASP.NET(C#)& SQL Sever的在线考试系统项目。 这是我的代码。在执行下一个&上一个按钮的代码时遇到问题。请给我答案。谢谢。如何编写下一个和上一个按钮的代码?

public partial class Default : Page 
{ 
    int count; 
    string ans; 
    int[] a=new int[5]; 
    int t; 
    int ctr; 

    SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString()); 
    SqlDataAdapter da = new SqlDataAdapter(); 
    SqlCommand cmd = new SqlCommand(); 
    DataSet ds = new DataSet(); 

    DateTime myDate; 
    DataTable dt = new DataTable(); 
    DataRow dr; 

    public void Show() 
    { 
     Session["Answered"] = dt; 

     View v = this.View1; 

     Label l = default(Label); 
     l = (Label)v.FindControl("Label1"); 
     l.Text = dt.Rows[ctr]["Serial"] + "."; 
     l = (Label)v.FindControl("Label2"); 
     l.Text = dt.Rows[ctr]["question"].ToString(); 

     RadioButtonList r = default(RadioButtonList); 
     r = (RadioButtonList)v.FindControl("RadioButtonList1"); 
     r.Items.Clear(); 
     r.Items.Add(dt.Rows[ctr]["choice1"].ToString()); 
     r.Items.Add(dt.Rows[ctr]["choice2"].ToString()); 
     r.Items.Add(dt.Rows[ctr]["choice3"].ToString()); 
     r.Items.Add(dt.Rows[ctr]["choice4"].ToString()); 
     r.SelectedIndex = Convert.ToInt32(dt.Rows[ctr]["selected"]); 

     Session["ctr"] = ctr; 
    } 
    protected void Timer1_Tick(object sender, System.EventArgs e) 
    { 
     DateTime mydate2 = DateTime.Now; 
     DateTime mydate3 = default(DateTime); 

     try 
     { 
      mydate3 = Convert.ToDateTime((myDate - mydate2).ToString()); 
      this.Label5.Text = "Time Left: " + mydate3.ToShortTimeString(); 
     } 
     catch (Exception ex) 
     { 
      this.Label5.Text = "Error Setting up the Timer. Contact Admin"; 
     } 

     if (mydate3.ToShortTimeString() == "00:00:00") 
     { 
      int marks = 0; 
      Session["Answered"] = dt; 

      Response.Redirect("default3.aspx?marks=" + marks); 

     } 
    }  
    protected void Page_Load(object sender, System.EventArgs e) 
    { 
     DateTime myDate = new DateTime(); 
     myDate =Convert.ToDateTime(Request.Cookies["start"].Value); 

     if (!IsPostBack) { 
      this.MultiView1.ActiveViewIndex = 0; 
      conn.Open(); 
      cmd.Connection = conn; 

      Random arbit = new Random(); 

      for (int i = 0; i <= a.GetUpperBound(0); i++) { 
       t = arbit.Next(1, 10); 

       if (Array.IndexOf(a, t) == -1) { 
        a[i] = t; 

       } else { 
        goto X; 
       } 

      } 

      for (int i = 0; i <= 4; i++) 
      { 
       cmd.CommandText = "select * from test where Serial=" + a[i]; 
       da.SelectCommand = cmd; 
       da.Fill(ds, "test"); 
      } 

      conn.Close(); 

      dt = new DataTable("Answered"); 
      dt.Columns.Add("Serial", typeof(int)); 
      dt.Columns.Add("question", typeof(string)); 
      dt.Columns.Add("choice1", typeof(string)); 
      dt.Columns.Add("choice2", typeof(string)); 
      dt.Columns.Add("choice3", typeof(string)); 
      dt.Columns.Add("choice4", typeof(string)); 
      dt.Columns.Add("correct", typeof(string)); 
      dt.Columns.Add("selected", typeof(int)); 

      DataRow r = null; 

      foreach (DataRow r_loopVariable in ds.Tables["test"].Rows) { 
       r = r_loopVariable; 
       dr = dt.NewRow(); 
       dr["Serial"] = dt.Rows.Count + 1; 
       dr["question"] = r["question"]; 
       dr["choice1"] = r["choice1"]; 
       dr["choice2"] = r["choice2"]; 
       dr["choice3"] = r["choice3"]; 
       dr["choice4"] = r["choice4"]; 
       dr["correct"] = r["correct"]; 
       dr["selected"] = -1; 
       dt.Rows.Add(dr); 

      }  
      Session["Answered"] = dt;  
      Show(); 
     } 

    } 
    protected void btnNext_Click(object sender, EventArgs e) 
    { 
     Session["ctr"] = ctr; 
     Session["Answered"] = dt; 
     Session["ctr"] = ctr; 
     ctr += 1; 
     Show(); 
     if (ctr == 4) 
     { 
      this.btnNext.Enabled = false; 
     } 
     this.btnPrev.Enabled = true;  
    }  
    protected void btnPrev_Click(object sender, EventArgs e) 
    { 
     Session["ctr"] = ctr; 
     Session["Answered"] = dt; 
     ctr = ctr - 1; 
     if (ctr == 0) 
     { 
      this.btnPrev.Enabled = false; 
     } 
     Session["ctr"] = ctr; 
     this.btnNext.Enabled = true; 
     Show(); 
    }   
    protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     RadioButtonList1.SelectedIndexChanged += new EventHandler(RadioButtonList1_SelectedIndexChanged); 
     Session["Answered"] = dt; 
    } 
    protected void btnShowMarks_Click(object sender, EventArgs e) 
    { 
     int marks = 0; 
     Session["Answered"] = dt; 

     Response.Redirect("default3.aspx?marks=" + marks); 
     Session["marks"] = dt; 
     int []b=new int[6]; 
     foreach (int c in b) 
     { 
      RadioButtonList1.SelectedIndex.ToString(); 
     } 
    } 
} 
+0

单击“上一个”或“下一个”按钮时,您预期会发生什么? – Filburt 2011-04-15 07:07:03

回答

0

您可以从数据库中提取随机数据并将其存储在数据集中。然后在那里你可以用平常的方式得到问题。然后,您可以使用变量来获取问题,该变量将存储问题编号以获取上一个问题和下一个问题。如果用户点击上一个,则变量 - 1如果下一个也为+1

相关问题