2016-10-22 9 views
-1

Я использую веб-приложение типа портала викторины.Значение глобальной переменной не сохраняется на странице postback в asp.net

Первый вопрос - выбор из db. щелкнув дальше следующий кнопка, следующий вопрос получение хорошо. Теперь снова нажмите на следующий или предыдущий кнопка ничего не происходит!

Используемая концепция - сделана глобальная переменная, которая будет равна текущему вопросу №. из моей таблицы вопросов, приращение/декрементирующая переменная в следующих/предыдущих кликах

почему этот подход не работает! Какой код я должен изменить в Page_Load или где?

примечание:

1.disconnected модель используется

2.countdown таймер работает нормально на постбэков, не проблема.

Прикрепленные изображения ..

1. question table design here

2.На страницы по умолчанию (ques1) и щелкать следующую кнопку (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; 

    } 
} 
} 

пожалуйста, помогите ребята! застрял на этом ..

+0

Проверьте мой ответ и скажите, помогли ли вы – mybirthname

ответ

1

Если вы хотите сохранить некоторую ценность между обратными вызовами, используйте Session или ViewState.

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

Как принять значение с сеанса.

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

 Смежные вопросы

  • Нет связанных вопросов^_^