Программная реализация редактора тестовых заданий
String myStringVariable = «вы точно хотите удалить выбранный элемент?»; Список значений элементов принадлежащих компетенциям. Список ид элементов, принадлежащих компетенциям. From compItem in Competencelist//список выбранных компетенций. Проверяем полученный элемент на существование. Select new { CE. Id_CompetenceElement, elementdata. CompetenceText, CE. ElementText }; Select new… Читать ещё >
Программная реализация редактора тестовых заданий (реферат, курсовая, диплом, контрольная)
В первую очередь рассмотрим способы связывания элементов web формы с таблицами из БД. Для этого используется стандартный элемент ASP.net — LinqDataSource с целью привязки элемента с разработанной связью LINQ to SQL.
В свойствах данного элемента должны быть указаны наименование связующего элемента LINQ и заголовок таблицы. В случае необходимости в свойствах могут быть добавлены правила выбора заданий, обновления, вставки и удаление элемента из указанной таблицы. Пример кода для заполнения полей таблицы компетенций представлен ниже:
runat="server" .
ContextTypeName="Testint.DataClasses1DataContext" .
EntityTypeName="" .
TableName="Competence" .
EnableUpdate="True" .
EnableInsert="True" .
EnableDelete="True" >
Для работы с таблицами из программной части необходимо создать элемент связи с БД. В нашем случае этим элементом является dataСontext. Далее создается запрос к базе данных, в который могут быть включены внутренние элементы страницы (например, Competencelistсписок используемых компетенций). Пример кода для заполнения таблицы элементов, принадлежащих выбранным компетенциям:
protected void GetElements (List Competencelist, GridView gv, int elementtype) //получение списка выбранных элементов из таблицы с определенным типом.
{//Установка связи с БД.
var dataContext = new DataClasses1DataContext ();
//назначение источника для таблицы.
gv.DataSource = from elementdata in.
(// список значений элементов принадлежащих компетенциям.
from competence_list in.
(//список ид элементов, принадлежащих компетенциям.
from compItem in Competencelist//список выбранных компетенций.
join competenceItem in dataContext.Competence.
on compItem equals competenceItem. Id_Competence into ccom.
from coptence_item in ccom.
select new { coptence_item.Id_Competence, coptence_item.CompetenceText }.
).
join ElementGroupItem in dataContext.ElementGroup.
on competence_list.Id_Competence equals ElementGroupItem. Id_Competence.
select new{ competence_list.CompetenceText, ElementGroupItem. Id_CompetenceElement}.
).
join CE in dataContext.CompetenceElements.
on elementdata. Id_CompetenceElement equals CE. Id_CompetenceElement.
where CE. Id_TypeOfElement == elementtype.
select new { CE. Id_CompetenceElement, elementdata. CompetenceText, CE. ElementText };
gv.DataBind ();
}Для реализации метода создания новой записи в таблице используются стандартные средства LINQ. После создания экземпляра класса и заполнения его полей, добавляется созданный класс в связанную таблицу. После добавления изменения в таблице БД должны быть сохранены.
// Установка связи с БД.
var dataContext = new DataClasses1DataContext ();
//создание экземпляра задания.
TestTask currenttask = new TestTask ();
{// заполенение атрибутов.
currenttask.Id_Type = int. Parse (TaskTypeList.SelectedValue);
currenttask.Complexity = byte. Parse (ComplexityList.SelectedValue);
currenttask.Explanation = TaskExplanation. Text;
currenttask.TaskText = ForTaskText. Text;
//вставка экземпляра задания в конец таблицы.
dataContext.TestTask.InsertOnSubmit (currenttask);
//принятия изменений в таблице БД.
dataContext.TestTask.Context.SubmitChanges ();
}.
Операция удаления элемента из БД требует подтверждение пользователя на ее выполнение с целью исключения возможности случайного исполнения операции. Для подтверждения действия предусмотрено появление перед пользователем всплывающего окна (рисунок 3.9).
Рисунок 3.9. Запрос на удаление элемента.
//запрос на подтверждение удаления элемента.
string myStringVariable = «вы точно хотите удалить выбранный элемент?» ;
ClientScript.RegisterStartupScript (this.GetType (), «myalert», «confirm ('» + myStringVariable + «');», true);
После получения подтверждения от пользователя необходимо убедиться, что удаляемый элемент существует в БД. Если после запроса к БД будет создан экземпляр класса, то его можно будет удалится из БД. После удаления элемента сохраняем изменения в таблица БД.
//связываемся с БД.
var dataContext = new DataClasses1DataContext ();
//получаем экземпляр класса по ИД.
elementItem = dataContext.CompetenceElements.
.First (p => p. Id_CompetenceElement == int. Parse (link.CommandArgument));
// проверяем полученный элемент на существование.
if (elementItem ≠ null).
{// удаляем строку в таблицу.
dataContext.CompetenceElements.DeleteOnSubmit (elementItem);
//сохраняем изменения.
dataContext.CompetenceElements.Context.SubmitChanges ();
Редактор предоставляет возможность привязки тестового задания к одной или нескольким темам, или элементам компетенции, отображенных на форме. Учитывая, что выбранные элементы будут использоваться в дальнейшем их удобнее хранить в специальных списках. Далее представлен код для заполнения списка выбранными элементами из таблицы:
protected List GetCheckPoints (GridView gv).
// получение выбранных полей таблицы.
{.
List grList = new List ();
foreach (GridViewRow item in gv. Rows).
{.
if ((item.Cells[0]. FindControl («CheckCom») as CheckBox).Checked).
{.
item.BackColor = System.Drawing.Color.Aquamarine;
grList.Add (int.Parse (item.Cells[1]. Text));
}.
}.
return grList;
}.
Выводы по главе
На основе выявленных требований к редактору тестовых заданий и необходимых атрибутов для тестового задания был разработан редактор тестовых заданий. Приложение использует технологии ASP.NET Webforms в среде Visual Studio. Для хранения тестовых заданий использовалась база данных, реализованная с помощью SQL Server Management Studio на основе ее инфологической модели.
Организация связи базы данных с приложением осуществляется с помощью технологии LINQ to SQL, обеспечивающей интерпретируемость запросов. Программная часть реализована с помощью языков C# и JavaScript.