السلام عليكــم ورحمـة الله وبركاتــه ،،
توضيح للسؤال (برنامج امتحانات) :
لدي كلاس به المتغيرات التالية
Public Class Answer Private QID As String Private CorrectAnswer1 As String Private StudentAnswer As String Private Result As String Public Property MyQID() As String Get Return QID End Get Set(ByVal value As String) QID = value End Set End Property Public Property MyCorrectAnswer() As String Get Return CorrectAnswer1 End Get Set(ByVal value As String) CorrectAnswer1 = value End Set End Property Public Property MyStudentAnswer() As String Get Return StudentAnswer End Get Set(ByVal value As String) StudentAnswer = value End Set End Property Public ReadOnly Property MyResult() As ResVal Get If StudentAnswer = CorrectAnswer1 Then Return ResVal.Correct Else Return ResVal.Incorrect End If End Get End Property Public Enum ResVal Correct Incorrect End Enum End Class
ولدي الفورم التالي الذي يعرض الاسئلة للطلاب
والزر الذي يحفظ عن طريق ال ArrayList التالي
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
' Save the results into the database.
Try
' Save off previous answers
Dim dr As System.Data.DataRowView
dr = CType(DetailsView1.DataItem, System.Data.DataRowView)
' Create Answer object to save values
a.MyQID = dr("QuestionOrder").ToString()
a.MyCorrectAnswer = dr("TCorrectAnswer").ToString()
a.MyStudentAnswer = Me.DropDownList1.SelectedValue.ToString()
al = CType(Session("AnswerList"), ArrayList)
Dim b As Integer
b = a.MyQID
al.Add(a)
Session.Add("AnswerList", al)
Catch ex As Exception
Label1.Text = ("Error2 " + ex.Message)
End Try
If DetailsView1.PageIndex = DetailsView1.PageCount - 1 Then
' Go to evaluate answers
Response.Redirect("results.aspx")
Else
DetailsView1.PageIndex += 1
End If
If DetailsView1.PageIndex = DetailsView1.PageCount - 1 Then
Button1.Text = "Save and Logout"
End Ifاما في زر السابق فترجع للسؤال السابق فقط
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
al = CType(Session("AnswerList"), ArrayList)
al.Add(a)
'Session.Remove("AnswerList")
If DetailsView1.PageIndex = DetailsView1.PageCount - 1 Then
' Go to evaluate answers
Response.Redirect("results.aspx")
Else
DetailsView1.PageIndex -= 1
End If
End Subالمشكلة لدي اذا تكررت اجابة الطالب (اي رجع لسؤال سابق كلما ضغط زر Next تضاف مصفوفة جديدة) في النتائج وهنا الصورة للتوضيح
الاسئلة 1 - 2 حلت مرتين واضيفت مرتين !
كيف اكتب فوق الاجابة السابقة او ابقي أخر اجابة للطالب فقط او احدد انها تضاف كرقم السؤال مثلا ام هنالك طريقة اخرى غير ArrayList ؟؟
شكرا للجميع
تحياتي
:wub:

