2016-10-22 3 views
-1

Je suis en train d'implémenter une application Web de type portail de quiz.La valeur de la variable globale ne persiste pas lors de la publication de la page dans asp.net

La première question est extraite de db. en cliquant sur le bouton suivant, la question suivante va bien. Maintenant encore en cliquant sur suivant ou bouton rien ne se passe!

Concept utilisé - fait une variable globale qui sera égale à la question actuelle no. à partir de ma table de questions, incrémenter/décrémenter la variable sur les clics suivant/précédent

pourquoi cette approche ne fonctionne pas! quel code devrais-je changer dans Page_Load ou ailleurs où?

Note:

modèle 1.disconnected utilisé

2.countdown minuterie fonctionne bien sur postbacks, aucun problème.

Les images attachées ..

1. question table design here

2.Sur page par défaut (ques1) et sur cliquant sur le bouton suivant (ques2) Q1. and Q2. combined image

public partial class quiz : System.Web.UI.Page 
{ 
int qno=0; //global variable 
DataTable dt; 

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (Session["sname"] == null) 
    { 
     Response.Redirect("home.aspx"); 
    } 
    string qpname = Request.QueryString["qpname"]; //question paper table name 

    //**some countdown timer code here** 

    SqlConnection conn = null; 
    conn = new SqlConnection(); 
    conn.ConnectionString = "Data Source=xyz; Initial Catalog=xzyyzz;Integrated Security=True;"; 

    String queryString = "select * from " + qpname + ""; 
    SqlCommand cmd = new SqlCommand(queryString, conn);  
    SqlDataAdapter ad = new SqlDataAdapter(queryString, conn); 
    dt = new DataTable(); 
    ad.Fill(dt); 


    foreach (DataRow row in dt.Rows) 
     { 
      Label6.Text = row["marks"].ToString(); //for marks of current ques. 
      Label7.Text = row["ques"].ToString(); //for ques. 
      qno = (int)row["qno"]; //ques no. 
      qno = qno + 1; // 
      break; 
     } 

} 


protected void Timer1_Tick(object sender, EventArgs e) 
{ 
    //some timer code here 
} 

public class CountDownTimer 
{ 
    //some timer code here 
} 

protected void submit_Click(object sender, EventArgs e) 
{ 

    Response.Redirect("student.aspx"); //redirect on submit 

} 

protected void prev_Click(object sender, EventArgs e) //prev button 
{ 

    display_ques(-1); 

} 
protected void next_Click(object sender, EventArgs e) //next button 
{ 
    display_ques(1); 
} 

public void display_ques(int direction) 
{ 
    DataRow[] result = dt.Select(" qno = " +qno+ ""); //for current ques no. 

    foreach (DataRow row in result) 
    { 
     Label6.Text = row["marks"].ToString(); 
     Label7.Text = row["ques"].ToString(); 
     if (direction == 1) 
      qno=qno+1; 
     else 
      qno=qno-1; 
     break; 

    } 
} 
} 

s'il vous plaît aider les gars! collé sur ce ..

+0

Cochez ma réponse et dites-moi si cela vous a aidé – mybirthname

Répondre

1

Si vous souhaitez conserver une certaine valeur entre les publications, utilisez Session ou ViewState.

Session["qno"] = (int)row["qno"]; 

Comment prendre la valeur à partir de la session.

int qno = 0; 
if(Session["qno"] != null) 
    qno = int.TryParse(Session["qno"].ToString(), out qno);