2012-08-01 104 views
0

我的網頁更新服務器上的表記錄。 「count」是一個計數測驗分數的int變量。它的值正確顯示在網頁上,但保存在數據庫中的記錄對所有記錄顯示值「0」。數據庫中的int值未更新

int count = 0; 

protected void Button1_Click(object sender, EventArgs e) 

{ 

count++; // for each correct answer 

} 
protected void submitScore_Click(object sender, EventArgs e) 

{ 
var check = (from i in dc.QuizTakens where (i.username ==Context.User.Identity.Name && i.SubName == "Sports" && i.Lev=="Easy")select i).SingleOrDefault(); 


if (check == null) 
{ 
    QuizTaken q = new QuizTaken(); 
    q.SubName = "Sports"; 
    q.Lev = "Easy"; 
    q.username = Context.User.Identity.Name; 
    q.score_max = count; 
    dc.QuizTakens.InsertOnSubmit(q); 
    dc.SubmitChanges(); 

} 
} 

該表的主鍵是SubName,Lev,QId。整個記錄被添加到表中,但score_max的值始終爲0,即使我能夠在網頁上顯示score_max的正確值。

+0

運行此代碼時'c'的值是多少?如果記錄已經存在會發生什麼?你沒有更新任何地方 – Basic 2012-08-01 12:38:19

+0

我很抱歉,c是「count」。我已經編輯了代碼現在 – 2012-08-01 12:39:12

+0

計數從哪裏來?你能顯示那部分代碼嗎? – 2012-08-01 13:04:50

回答

2

根據您所示,您的count只是一個班級字段,不受ViewState或其他頁面級存儲的支持。這意味着它將在每個回發頁上的0,並且因爲它將被寫入到db。

您需要在頁面加載之間存儲它的值,很可能在ViewState之間。

+0

{// 代碼,我試圖通過以下方式既ViewState的和Session: 保護無效的Page_Load(){ 的ViewState [」分數「] = 0; .... } protected void Button1_click() count ++; //對於每個正確答案 .... ViewState [「score」] = count; } protected void submitScore_Click() { ... dc.score_max = System.Convert.ToInt16(ViewState [「score」]); } 但問題仍然存在! – 2012-08-02 14:29:17

+0

當然是的,因爲你重置了每個'Page_Load'上的'ViewState'。 – 2012-08-02 14:32:53

+0

非常感謝您,將它保存在我的button1_click()函數中。讓我知道如果你看到任何其他事情錯了! – 2012-08-02 14:54:44