2012-01-11 2 views
2

나는 우리 회사에서 뭔가 작업중인 멍청한 progammer입니다. 나는 훈련을 위해 퀴즈 엔진을 연구 중이다. 약 90 % 빌드 된 일부 샘플 코드가 있습니다. 나는 단지 몇 가지를 조정할 필요가 있습니다. 여기에 내가하고있는 일이있다.새 창에서 asp.net VB

이것은 ASP.net에 VB가 내장되어 있습니다. 나는 데이터베이스에서 (내장 된 SQLDataSource 바인딩을 사용하여) 당기는 질문들을 가지고있다. 현재는 대답을 선택하고, 대답을 선택하고, 다음을 클릭한다. 목록 등 .... 끝까지. 데이터베이스에는 정답을 나타내는 열이 있습니다. 다음을 클릭하면 정답에 대한 답을 작성하고 저장 한 후 다음 질문으로 계속 진행합니다. 마지막으로 정답과 오답을 뱉어냅니다.

그러나 사용자가 답변을 선택하고 다음을 클릭하면 바로 작은 새 창이 열립니다 (팝 - 그 질문을 즉시 "채점"하고 그 창에서 올바른지를 보여줍니다.

If selected answer = correctAnswer then 
"That is correct" 
Else 
"THat is not correct. The correct answer is B" 
End if 

새 창에는 하단 모서리에만 "확인"버튼이 있습니다. 확인을 누르면 새 창을 닫고 "다음"버튼이 수행하도록 프로그래밍 된 나머지 부분을 처리합니다. 당신이 도움이 될 것입니다 내가 원하는 코드를 제공 할 수있는 경우

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)  Handles buttonNext.Click 


    ' Save off previous answers 
    Dim dr As System.Data.DataRowView 
    dr = CType(questionDetails.DataItem, System.Data.DataRowView) 

    ' Create Answer object to save values 
    Dim a As Answer = New Answer() 
    a.QuestionID = dr("QuestionOrder").ToString() 
    a.CorrectAnswer = dr("CorrectAnswer").ToString() 
    a.UserAnswer = answerDropDownList.SelectedValue.ToString() 

    Dim al As ArrayList 
    al = CType(Session("AnswerList"), ArrayList) 
    al.Add(a) 

    Session.Add("AnswerList", al) 

    If questionDetails.PageIndex = questionDetails.PageCount - 1 Then 
     ' Go to evaluate answers 
     Response.Redirect("results.aspx") 
    Else 
     questionDetails.PageIndex += 1 
    End If 

    If questionDetails.PageIndex = questionDetails.PageCount - 1 Then 
     buttonNext.Text = "Finished" 
    End If 

End Sub 

: 여기

<asp:Button ID="buttonNext" runat="server" Text="Next" />&nbsp;</td> 

그와 함께 갈 수있는 Questions.aspx.VB 코드 : 여기에 버튼입니다. 도움에 미리 감사드립니다.

+1

처럼 보이도록 함수를 수정 쉽게 2. 사용자가 질문에 대답해야합니다. 다음을 클릭하여 올바른지 확인한 후 다음 또는 다른 버튼을 클릭하여 다음 질문을합니다. 사용자 정의 유효성 검사기를 사용할 때,하지만 아무도하지 않으면 테스트를 '실패'합니다. – Stuart

답변

2

이것은 상당히 직선적이어야합니다. 이미 정답을 검색 했으므로 다른 전화를 할 필요가 없습니다.

페이지에서 채점 및 확인 버튼을 살 곳을 만들어야합니다. 이 같은 뭔가 충분 :

<div id="gradeWindow" runat="server" visible="false"> 
<asp:label id="gradeLabel" runat="server" text="" /> 
<asp:button id="gradeOK" runat="server" text="OK" onclick="gradeOK_Clicked" /> 
</div> 

그런 다음 당신이 당신의 과정이가 퀴즈를 멀리 할 것 1. 조금, 두 가지 이유를 다시 생각해야하는이

Session.Add("AnswerList", al) 

If String.Compare(a.UserAnswer, a.CorrectAnswer) = 0 then 
    gradeLabel.Text = "That is correct" 
Else 
    gradeLabel.Text = "That is not correct. The correct answer is " + a.CorrectAnswer 
EndIf 

gradeWindow.Visible = true 

End Sub 

Protected Sub gradeOK_Clicked(ByVal sender As Object, ByVal e As System.EventArgs) 
If questionDetails.PageIndex = questionDetails.PageCount - 1 
    Then                
    Response.Redirect("results.aspx") 
Else         
    questionDetails.PageIndex += 1        
End If              
If questionDetails.PageIndex = questionDetails.PageCount - 1 
    Then         
    buttonNext.Text = "Finished"        
End If 
End Sub 
+0

그게 내가 원하는거야. 그렇다면 어떻게 그 작은 창에 나타낼 수있는 "맞다"또는 "틀린가"를 어떻게 얻을 수 있습니까? 가능하다면 그렇게하고 싶습니다. – Tim

+0

죄송합니다. 처음 게시물에 팝업 창이 필요 없다고 말씀 하셨다고 생각했습니다. 그래서 내가 div를 사용하는 이유는 무엇입니까? –

+0

죄송합니다, 형편 없음. 사실, 조금 바꿨습니다. 이 퀴즈를 새 창에서 열려면 window.open 문을 포함 시켰습니다. 그러나이 새 창에서는 여전히 "팝업"유형 창이 좋지만 현재 페이지의 일부로 표시됩니다 (자체 창이 아닙니다).이 창이 열리면 "확인"버튼을 사용하여 수정되거나 올바르게 표시되지 않습니다. 클릭하면 해당 작은 팝업 창이 닫히고 다음 질문으로 이동합니다. – Tim