Abra nueva ventana en ASP.NET VB
-
26-10-2019 - |
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" /> </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
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