2012-01-11 45 views
2

私は私たちの会社のために何かをしているnoob progammerです。私はトレーニングのためにクイズエンジンに取り組んでいます。約90%のサンプルコードがあります。私はちょうどいくつかのものを微調整する必要があります。ここで私が取り組んでいることがあります。asp.netで新しいウィンドウを開くVB

これは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を押すと、その新しいウィンドウが閉じられ、「次の」ボタンがプログラムされている残りの部分が処理されます。あなたが参考になります、私は必要なコードを、提供することができるならば

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 

:ここ

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

それと一緒に行くためにQuestions.aspx.VBコードされる:ここではボタンがあります。助けを前にありがとう。

チーム

+1

見えるようにあなたの関数を修正簡単 2.ユーザーは質問に答える必要があります。次をクリックして、正しいかどうかを確認してから、次の質問または他のボタンをクリックしてください。 本当にこれをやりたい場合は、カスタムバリデーターを使用する際に、しかし、もしあなたが誰もしなければテストを「失敗」します。 – Stuart

答えて

2

これはかなり単純です。すでに正しい答えを取得しているので、別の電話をする必要はありません。

ページでは、グレーディングと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> 

次に、このクイズは遠くになります2つの主な理由 1、あなたは少しあなたのプロセスを再考する必要があり、この

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

それは私が探しているものです。あなた自身の小さなウィンドウにポップアップ表示するには、 "それは正しい"または "それは間違っています"私はそれが可能ならばそれをしたいと思います。 – Tim

+0

申し訳ありません最初の投稿で、ポップアップウィンドウが必要ないと言ったと思いました。それで私はdivを使ったのですか? –

+0

申し訳ありませんが、私の悪い。実際、私はそれをちょっと変えました。私は新しいウィンドウでこのクイズを開くwindow.openステートメントを含んでいます。しかし、この新しいウィンドウでは、私はまだ "ポップアップ"タイプのウィンドウが欲しいですが、現在のページの一部として(それは独自のウィンドウではありません)このウィンドウが開くと、正しいかどうかを確認します。クリックすると小さなポップアップウィンドウが閉じられ、次の質問に移動します。 – Tim

関連する問題