在asp.net VB中打开新窗口

时间:2012-01-11 00:31:14

标签: asp.net window.open

我是一名为我们公司工作的noob程序员。我正在研究Quiz引擎进行培训。我有一些约90%构建的示例代码。我只需要调整一些东西。这就是我正在做的事情。

这是使用VB在ASP.net中构建的。我有一组问题,我是从数据库中提取的(使用内置的SQLDataSource绑定)。目前它的作用是提出问题,选择答案,然后单击“下一步”。然后它会提取下一个问题。列表等等......直到结束。数据库包含一个列,指出正确的答案是什么。当你点击下一步时,它会回答你正确答案的答案,存储它,然后继续下一个问题。最后,它会吐出正确答案和错误答案。

但是,这就是我想要做的。当用户选择一个答案并点击下一个时,它会立即打开一个小的新窗口(不是弹出窗口,而是同一页面上的窗口),立即“评分”该问题并在该窗口中显示是否正确。像这样的东西:

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

新窗口底部只包含一个“确定”按钮。当按下OK时,它会关闭该新窗口并处理“下一个”按钮编程要执行的其余操作。这是按钮:

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

以下是Questions.aspx.VB代码:

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

如果您能够提供我需要的代码,那将会很有帮助。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分: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>

然后修改你的功能看起来像这样

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