我遇到了一個問題,當我的頁面被加載,出於某種原因,我必須點擊按鈕兩次,纔會觸發事件。按鈕需要點擊兩次,當頁面加載開始觸發按鈕事件
這裏是我的代碼
protected void Page_Load(object sender, EventArgs e)
{
ds = DA.DsQndA(1);//pass quiz id to fill dataset with requested quiz.
numOfRows = ds.Tables[0].Rows.Count;//so we know when to get redirected to results page
//if we are at over max questions then go right to results page
if (myNum >= numOfRows)
Response.Redirect("~/QuizResult.aspx");
Question.InnerText = ds.Tables[0].Rows[myNum]["Question"].ToString();//very first question
Btn1.Click += BtnClick;
Btn2.Click += BtnClick;
Btn3.Click += BtnClick;
Btn4.Click += BtnClick;
}
這裏是我的按鈕單擊處理程序代碼
private void BtnClick(object sender, EventArgs e)
{
Button button = (Button)sender;
var rnd = new Random();
var qa = new List<KeyValuePair<string, int>>();
qa.Add(new KeyValuePair<string, int>(ds.Tables[0].Rows[myNum]["CorrectAnswer"].ToString(), 1));
qa.Add(new KeyValuePair<string, int>(ds.Tables[0].Rows[myNum]["WrongAnswer1"].ToString(), 0));
qa.Add(new KeyValuePair<string, int>(ds.Tables[0].Rows[myNum]["WrongAnswer2"].ToString(), 0));
qa.Add(new KeyValuePair<string, int>(ds.Tables[0].Rows[myNum]["WrongAnswer3"].ToString(), 0));
var myQa = qa.OrderBy(c => rnd.Next()).Select(c => new { c.Key, c.Value }).ToList();
if (button.ID == "Btn1")
DA.TrackAnswer(1, 1, Convert.ToInt32(ds.Tables[0].Rows[myNum]["QandAID"].ToString()), Btn1.Text, myQa[0].Value);
if (button.ID == "Btn2")
DA.TrackAnswer(1, 1, Convert.ToInt32(ds.Tables[0].Rows[myNum]["QandAID"].ToString()), Btn2.Text, myQa[1].Value);
if (button.ID == "Btn3")
DA.TrackAnswer(1, 1, Convert.ToInt32(ds.Tables[0].Rows[myNum]["QandAID"].ToString()), Btn3.Text, myQa[2].Value);
if (button.ID == "Btn4")
DA.TrackAnswer(1, 1, Convert.ToInt32(ds.Tables[0].Rows[myNum]["QandAID"].ToString()), Btn4.Text, myQa[3].Value);
Btn1.Text = myQa[0].Key;
Btn2.Text = myQa[1].Key;
Btn3.Text = myQa[2].Key;
Btn4.Text = myQa[3].Key;
myNum = myNum + 1;
}
頁面加載時就會從我的數據集的第一個問題,但是當我點擊一個按鈕,選擇我的答案,按鈕文本都會改變,但問題仍然是一樣的,但是當我再次單擊一個按鈕時,問題的改變開始工作。
我曾嘗試在我的頁面加載事件中使用if(!postback),並添加了buttonclick處理程序中的幾乎所有內容,但問題仍然不會改變,直到我單擊另一個然後才正常。
我需要發生的是加載問題和答案,只需點擊一次答案按鈕而不是兩次即可開始測驗。
我想我解釋得很對。
我準備在今晚的某個時間嘗試一下 – Chris