Прежде всего необходимо определить, зарегистрировался ли учащийся. Если нет, он направляется на регистрацию:
If Len(Session("StudentID")) 0 Then
Response.Redirect("./index.aspx")
End If
Цель следующей проверки — установить, выбрал ли учащийся раздел, по материалам которого он хочет пройти тестирование:
If Len(Session("CourseSectionID")) = 0 Then
Если раздел не выбран, учащийся перенаправляется на страницу студента:
Response,Redirect.(" ,/hpme_room,aspx")
Сначала из базы данных извлекается название раздела
DBCommand = New OleDbDataAdapter _
("Select SectionName from CourseSections Where "
& "CourseSectionID = " & Session("CourseSectionID") _
, DBConn)
и помещается в объект DataSet:
DBCommand.Fill (DSPageData, _
"SectionName")
Свойству Text элемента Label, предназначенного для вывода заголовка, присваивается строка, включающая название раздела:
lblTi.tle.Text = "<СЕNТЕR>Раздел " _
& DSPageData.Tables("SectionName"). _
Rows(0).Item("SectionName") _
& "</CENTER>"
Далее извлекаются'все вопросы теста:
DBCommand = New OleDbDataAdapter _
("Select SectionQuestionID, QuestionText " _
& "From SectionQuestions Where CourseSectionID = " _
& Session("CourseSectionID"), DBConn)
DBCommand.Fill(DSPageData, _
"QuizQuestions")
После этого начинается внешний цикл, в котором обрабатывается каждый вопрос теста:
For I = 0 to DSPageData.Tables("QuizQuestions"). _
Rows.Count - 1
Нам понадобится объект LiteralControl для размещения HTML-текста в элементе управления Panel:
Dim IcHTML = New LiteralControl
Текст вопроса, а также HTML-тег помещаются в объект LiteralControl:
IcHTML.Text = "<В>"
& DSPageData.Tables{"QuizQuestions"). _
Rows(I) .Item("QuestionText") & "</B> "
В свою очередь, объект LiteralControl помещается в элемент Panel:
pnlQuestionsiControls.Add(IcHTML)
Для размещения вариантов ответа надлежит создать элемент управления Drop DownList:
Dim MyDDL - New DropDownList
Сохраняем идентификатор вопроса
TempID - DSPageData.Tables("QuizQuestions"). _
Rows(I).Item("SectionQuestionID")
и добавляем к нему букву "Q", что послужит именем элемента DropDownList:
После этого извлекаются все ответы на текущий вопрос:
DBCommand = New OleDbDataAdapter _
("Select AnswerText "
& "From QuestionAnswers Where SectionQuestionID = " _
& TempiD, DBConn)
DBCommand.Fill(DSPageData, _
TempID)
Теперь можно войти во внутренний цикл, где обеспечивается обработка каждого ответа на вопрос:
For J = 0 to DSPageData.Tables(TempID). _
Rows.Count = 1
Каждый ответ должен появиться в элементе DropDownList. Для этого необходим объект Listltem:
Dim Myltem = New Listltem
|