ASP.NET VBで新しいウィンドウを開きます
-
26-10-2019 - |
質問
私は、私たちの会社のために何かに取り組んでいるNOOBのプログラムです。私はトレーニングのためにクイズエンジンに取り組んでいます。約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」ボタンのみが含まれます。 OKが押されると、新しいウィンドウを閉じて、「次の」ボタンがプログラムされるものの残りの部分を処理します。これがボタンです:
<asp:Button ID="buttonNext" runat="server" Text="Next" /> </td>
これが質問に沿って進む質問です。
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
必要なコードを提供できれば、それは役に立ちます。助けてくれてありがとう。
ティム
解決
これはかなり簡単なはずです。すでに正解を取得しているので、別の電話をかける必要はありません。
ページでは、グレーディングとOKボタンが必要な場所を作成する必要があります。このようなものは十分でしょう:
<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
所属していません StackOverflow