Pregunta

Soy un progammer de novato que está trabajando en algo para nuestra empresa. Estoy trabajando en un motor de cuestionario para capacitación. Tengo un código de muestra que está construido alrededor del 90%. Solo necesito ajustar algunas cosas. Esto es en lo que estoy trabajando.

Esto está construido en ASP.NET con VB. Tengo un conjunto de preguntas que "estoy extrayendo de una base de datos (usando la vinculación de SqlDataSource incorporada). Actualmente, lo que hace es extraer la pregunta, seleccionar la respuesta y hacer clic a continuación. Luego extrae la siguiente pregunta en la pregunta en el Lista y así sucesivamente ... Hasta el final. La base de datos contiene una columna que indica cuál es la respuesta correcta. Cuando hace clic a continuación, compara su respuesta a la respuesta correcta, la almacena y continúa a la siguiente pregunta. El final, escupe sus respuestas correctas y respuestas incorrectas.

Sin embargo, esto es lo que quiero hacer. Cuando el usuario selecciona una respuesta y hace clic a continuación, se abre inmediatamente por una pequeña ventana nueva (no una ventana emergente, sino una ventana en la misma página) que inmediatamente "califica" esa pregunta y en esa ventana, muestra si es correcto. .algo como esto:

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

La nueva ventana solo contendrá un botón "OK" en la esquina inferior. Cuando se presiona OK, cierra esa nueva ventana y procesa el resto del botón "Next" para hacer. Aquí está el botón:

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

Aquí están el código de preguntas.aspx.vb para acompañar eso:

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

Si puede proporcionar el código que necesito, eso será útil. Gracias de antemano por la ayuda.

Tim

¿Fue útil?

Solución

Esto debería ser bastante sencillo. Como ya ha recuperado la respuesta correcta, no hay necesidad de hacer otra llamada.

En su página debe crear un lugar donde desee el botón de calificación y OK para vivir. Algo como esto sería suficiente:

<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>

Luego modifique su función para que se vea así

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top