2012-08-01 2 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의 올바른 값을 표시 할 수 있더라도 score_max 값은 항상 0입니다.

+0

이 코드를 실행할 때'c'의 값은 무엇입니까? 레코드가 이미 존재하면 어떻게됩니까? 어디서나 업데이트하지 않겠습니다. – Basic

+0

죄송합니다. c는 "카운트"입니다. 지금 코드를 편집했습니다 –

+0

카운트는 어디에서 왔습니까? 코드의 일부분을 보여줄 수 있습니까? 다음 –

답변

2

표시된 내용에서 count은 클래스 필드 일 뿐이며 ViewState 또는 다른 페이지 수준 저장 장치가 아닙니다. 즉, 모든 페이지 포스트 백에서 0이 될 것이며, 그 결과 db에 기록됩니다.

페이지로드 사이에 값을 저장해야합니다 (대부분 ViewState).

+0

에서 { // 코드 : 보호 무효를 Page_Load() { 의 ViewState [ " 점수 "] = 0; .... } protected void Button1_click() { 카운트 ++; // 정확한 답마다 .... ViewState [ "score"] = count; } protected void submitScore_Click() { ... dc.score_max = System.Convert.ToInt16 (ViewState [ "score"]); } 하지만 문제가 계속 발생합니다. –

+0

각'Page_Load'에서'ViewState'를 리셋했기 때문에 물론입니다. –

+0

대단히 감사합니다. button1_click() 함수에 저장했습니다. 당신이 다른 어떤 것을 잘못 본 것을 알게 해주십시오! –

관련 문제