質問

私は、私たちの会社のために何かに取り組んでいる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" />&nbsp;</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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top