Естественно, для начала эту БД необходимо создать. В качестве СУБД, в нашем демонстрационном примере, мы будем использовать MS SQL 2008, для выполнения же самого задания допускается использование любой СУБД по выбору учащегося.
Подробнее о методах доступа к данным и управлении состоянием см. в лекции 10 и лекции 14.
Подготовка Базы данных

Поскольку наша база данных будет служить исключительно демонстрационным целям, не будем изменять никаких настроек, ограничимся тем, что введем имя для новой БД - MSWebCourse

Таблица User - в данной таблице будет храниться информация о пользователях нашего приложения
Выберите функцию - создать таблицу - из выпадающего меню соответствующей вкладки "Таблицы" созданной БД.

Зададим следующие имена столбцов для нашей таблица и типы данных:

Определим столбец как первичный ключ

На панели свойств столбца , в нижней части экрана, в разделе "Спецификация идентификатора"поменяйте значение свойства "Идентификатор" на "Да".

Сохраните таблицу под именем User.
Аналогичным образом создайте следующие таблицы





Определение связей между таблицами
Создадим диаграмму БД

Добавим к нашей диаграмме только что созданные таблицы

Свяжем таблицы Order и Customer по атрибуту CustomerID, для этого просто выделим этот атрибут в таблице Order и, не отпуская левой кнопки мыши, соединим его с соответствующим атрубутом таблицы Customer. Мы увидим следующее окно:

Убедившись в правильности параметров, нажмем OK.
Следующее окно уведомит нас о создании связи по внешнему ключу, также нажмем ОК.

Связь создана

Сохраните изменения в диаграмме и аналогичным образом свяжите следующие таблицы:
Order и GoodsInOrder по атрибуту OrderID, Good и GoodsInOrder по атрибуту GoodID.

Теперь нужно заполнить таблицы данными.

Создайте не менее 3-5 записей для каждой из таблиц.
После этого БД готова для использования в примере.
Создадим веб - страницу средствами Visual Studio 2008, на которой будет выводить информация о выбранном из списка заказе OrderInfo.aspx.
На странице разместим элементы управления DropDownList с ID - ddl_orders и Label с ID - lbl_orders.

Чтобы осуществить привязку к данным выберем пункт меню "Выбрать источник данных"

В мастере конфигурации источника данных в качестве источника данных выберем "Новый источник данных"

В качестве типа источника данных укажем - База данных, в качестве имени источника данных - OrdersDS.

В окне выбора соединения данных нажмите на кнопку - "Новое соединение".
В появившемся окне выберите Microsoft SQL Server и нажмите "Продолжить".

Дальше необходимо добавить подключение к БД. Здесь все зависит от того, как сформирован ваш SQL сервер и типа аутентификации, установите параметры в соответствии с настройками вашего SQL сервера.


После окончания настройки соединения и сохранения строки подключения, необходимо настроить оператор Select для нашего элемента управления. В нашем выпадающем списке будут содержаться названия заказов. Настройка оператора Select будет выглядеть следующим образом:

При этом в качестве поля данных для отображения выберем OrderName, а в качестве поля данных для значения укажем OrderID.

На этом настройка элемента управления с привязкой к данным закончена.
Запустив отладку проекта, мы можем убедиться, что выпадающий список отображает значения соответствующего поля в таблице Order.

Работа с данными остальных элементов управления с привязкой к данным осуществляется аналогичным образом.
Рассмотрим аналогичный пример, но в качестве источника данных всесто используем LinqDataSource.
Для начала, для того чтобы можно было работать с LinqDataSource необходимо создать класс представления Linq в SQL.
Для этого:

LinqDataSource в качестве источника данных для выпадающего списка.OrderName, а в качестве поля данных для значения укажем OrderID.
Привязка ЭУ к источнику данных выполнена.
Рассмотрим простой пример, иллюстрирующий работу в целом как элементов управления с привязкой к источнику данных и элементов управления источником данных, так и
Для начала снова подготовим нашу базу данных для выполнения примера. Создадим хранимую SQL-процедуру, выводящую в зависимости от введенного идентификатора заказа, товары в заказе и их количество.
Конечно, реализовать данный функционал можно и при помощи SQL – запроса непосредственно при редактировании C# кода нашей страницы, но это будет не лучшее решение, с точки зрения безопасности и уязвимости сайта.
CREATE PROCEDURE dbo.orderInfo (@ordID int) AS BEGIN select dbo.Good.GoodName, dbo.GoodsInOrder.NumberOfGoods from dbo.GoodsInOrder INNER JOIN dbo.Good ON dbo.Good.GoodID=dbo.GoodsInOrder.GoodID where dbo.GoodsInOrder.OrderID=@ordID END
Нажмите Выполнить. На этом
Добавьте на веб - страницу следующие ЭУ: и . В качестве источника данных для укажите и при настройке оператора Select источника данных выберите пункт Укажите специальный оператор SQL или хранимую процедуру и нажмите Далее.

В качестве хранимой процедуры для оператора Select укажите только что созданную нами orderInfo и нажмите Далее.

В качестве источника параметров укажите Session, В качестве Session Field укажите orderID и значение по умолчанию 1.

Добавьте следующий код для события выпадающего списка SelectedIndexChanged
//вот собственно и иллюстрация применения Session – передача данных
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Session["OrderID"] = DropDownList1.SelectedValue;
}
В свойствах выпадающего списка присвойте параметру значение True.

Теперь при изменении текущего знаячения выпадающего списка мы будем видеть более подробную информацию о выбранном заказе. Логика выполнения такова: при изменении значения выпадающего списка в сессию OrderID передается значение идентификатора заказа, затем в соответствии с настройкой источника данных выполняется хранимая SQL – процедура, кооторая возвращает наименования товаров в данном заказе и их количество, что и отображается в "привязанном" к источнику данных .

Для иллюстрации работы элемента управления источником данных нам понадобится следующая процедура, вносящая изменение количества определенного товара в заказе.
CREATE PROCEDURE dbo.Updt (@id int, @newValue int, @goodname nvarchar(50)) AS BEGIN Update dbo.GoodsInOrder set NumberOfGoods=@newValue where OrderID=@id and GoodID = (Select GoodID from dbo.Good where dbo.Good.GoodName = @goodname) END
Затем добавим командную колонку Правка, для этого выберите Правка столбцов в меню задач .

Добавьте столбец Правка, Обновить, Отмена и с помощью стрелок справа от поля Выбранные поля переместите его в начало списка.

В asp – коде для добавьте свойство ReadOnly=true, для колонки GoodName, это необходимо для того, чтобы сделать возможным только изменение поля Number.
<asp:GridView ID="gv_goods" runat="server" AutoGenerateColumns="False"
DataSourceID="ordInfo" onrowupdating="gv_goods_RowUpdating">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="GoodName" HeaderText="GoodName" ReadOnly=true
SortExpression="GoodName" />
<asp:BoundField DataField="NumberOfGoods" HeaderText="NumberOfGoods"
SortExpression="NumberOfGoods" />
</Columns>
У элемента управления есть параметр UpdateString, определяющий sql – команду выполняемую в случае обновления источника данных. Метод Update этого же элемента управления осуществляет непосредственное обновление источника данных, в нашем случае таблицы GoodsInOrder.
Напишем обработчик события RowUpdating для .
C# - код итоговой веб – страницы
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Linq;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web.Security;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class OrderInfo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Session["OrderID"] = DropDownList1.SelectedValue;
}
protected void gv_goods_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int orderID = 0;
try
{
orderID = Convert.ToInt32(Session["OrderID"].ToString());
}
catch (Exception exc)
{
//не очень изящный код, используется исключительно для упрощения самого примера
//по сути, если в сессии у нас нет значений, т.е. не произошла смена значения
// выпадающего списка мы в качестве идентификатора заказа передаем процедуре 1
orderID = 1;
}
int newGoodNumber = 0;
//получаем наименование товара, для которого необходимо поменять количество
string nameOfGood = gv_goods.Rows[e.RowIndex].Cells[1].Text;
foreach (DictionaryEntry newValues in e.NewValues)
{
//поскольку в GridView у нас только один столбец, значение которого можно изменить
// в словаре e.NewValues содержится только одно единственное значение нового количества
//в результате мы получаем измененное количество определенного товара в заказе
newGoodNumber = Convert.ToInt32(e.NewValues[0].ToString());
}
//вызываем процедуру обновления БД с необходимыми параметрами
ordInfo.UpdateCommand = "exec dbo.Updt '"+orderID+"', '"+
newGoodNumber+"', N'"+nameOfGood+"'";
//обновляем БД средствами элемента управления SqlDataSource
ordInfo.Update();
}
}
Результат. При выполнении Правка – изменение числа товара – Обновить, обновляются значения в таблице GoodsInOrder в нашей БД.

В приведенном выше коде отсутствует также проверка правильности вводимых значений. Оставляем это на ваше усмотрение, разумеется, подобные послабления недопустимы в условиях разработки реальных веб – приложений.
Естественно, для начала эту БД необходимо создать. В качестве СУБД, в нашем демонстрационном примере, мы будем использовать MS SQL 2008, для выполнения же самого задания допускается использование любой СУБД по выбору учащегося.
Подробнее о методах доступа к данным и управлении состоянием см. в лекции 10 и лекции 14.
Подготовка Базы данных

Поскольку наша база данных будет служить исключительно демонстрационным целям, не будем изменять никаких настроек, ограничимся тем, что введем имя для новой БД - MSWebCourse

Таблица User - в данной таблице будет храниться информация о пользователях нашего приложения
Выберите функцию - создать таблицу - из выпадающего меню соответствующей вкладки "Таблицы" созданной БД.

Зададим следующие имена столбцов для нашей таблица и типы данных:

Определим столбец как первичный ключ

На панели свойств столбца , в нижней части экрана, в разделе "Спецификация идентификатора"поменяйте значение свойства "Идентификатор" на "Да".

Сохраните таблицу под именем User.
Аналогичным образом создайте следующие таблицы





Определение связей между таблицами
Создадим диаграмму БД

Добавим к нашей диаграмме только что созданные таблицы

Свяжем таблицы Order и Customer по атрибуту CustomerID, для этого просто выделим этот атрибут в таблице Order и, не отпуская левой кнопки мыши, соединим его с соответствующим атрубутом таблицы Customer. Мы увидим следующее окно:

Убедившись в правильности параметров, нажмем OK.
Следующее окно уведомит нас о создании связи по внешнему ключу, также нажмем ОК.

Связь создана

Сохраните изменения в диаграмме и аналогичным образом свяжите следующие таблицы:
Order и GoodsInOrder по атрибуту OrderID, Good и GoodsInOrder по атрибуту GoodID.

Теперь нужно заполнить таблицы данными.

Создайте не менее 3-5 записей для каждой из таблиц.
После этого БД готова для использования в примере.
Создадим веб - страницу средствами Visual Studio 2008, на которой будет выводить информация о выбранном из списка заказе OrderInfo.aspx.
На странице разместим элементы управления DropDownList с ID - ddl_orders и Label с ID - lbl_orders.

Чтобы осуществить привязку к данным выберем пункт меню "Выбрать источник данных"

В мастере конфигурации источника данных в качестве источника данных выберем "Новый источник данных"

В качестве типа источника данных укажем - База данных, в качестве имени источника данных - OrdersDS.

В окне выбора соединения данных нажмите на кнопку - "Новое соединение".
В появившемся окне выберите Microsoft SQL Server и нажмите "Продолжить".

Дальше необходимо добавить подключение к БД. Здесь все зависит от того, как сформирован ваш SQL сервер и типа аутентификации, установите параметры в соответствии с настройками вашего SQL сервера.


После окончания настройки соединения и сохранения строки подключения, необходимо настроить оператор Select для нашего элемента управления. В нашем выпадающем списке будут содержаться названия заказов. Настройка оператора Select будет выглядеть следующим образом:

При этом в качестве поля данных для отображения выберем OrderName, а в качестве поля данных для значения укажем OrderID.

На этом настройка элемента управления с привязкой к данным закончена.
Запустив отладку проекта, мы можем убедиться, что выпадающий список отображает значения соответствующего поля в таблице Order.

Работа с данными остальных элементов управления с привязкой к данным осуществляется аналогичным образом.
Рассмотрим аналогичный пример, но в качестве источника данных всесто используем LinqDataSource.
Для начала, для того чтобы можно было работать с LinqDataSource необходимо создать класс представления Linq в SQL.
Для этого:

LinqDataSource в качестве источника данных для выпадающего списка.OrderName, а в качестве поля данных для значения укажем OrderID.
Привязка ЭУ к источнику данных выполнена.
Рассмотрим простой пример, иллюстрирующий работу в целом как элементов управления с привязкой к источнику данных и элементов управления источником данных, так и
Для начала снова подготовим нашу базу данных для выполнения примера. Создадим хранимую SQL-процедуру, выводящую в зависимости от введенного идентификатора заказа, товары в заказе и их количество.
Конечно, реализовать данный функционал можно и при помощи SQL – запроса непосредственно при редактировании C# кода нашей страницы, но это будет не лучшее решение, с точки зрения безопасности и уязвимости сайта.
CREATE PROCEDURE dbo.orderInfo (@ordID int) AS BEGIN select dbo.Good.GoodName, dbo.GoodsInOrder.NumberOfGoods from dbo.GoodsInOrder INNER JOIN dbo.Good ON dbo.Good.GoodID=dbo.GoodsInOrder.GoodID where dbo.GoodsInOrder.OrderID=@ordID END
Нажмите Выполнить. На этом
Добавьте на веб - страницу следующие ЭУ: и . В качестве источника данных для укажите и при настройке оператора Select источника данных выберите пункт Укажите специальный оператор SQL или хранимую процедуру и нажмите Далее.

В качестве хранимой процедуры для оператора Select укажите только что созданную нами orderInfo и нажмите Далее.

В качестве источника параметров укажите Session, В качестве Session Field укажите orderID и значение по умолчанию 1.

Добавьте следующий код для события выпадающего списка SelectedIndexChanged
//вот собственно и иллюстрация применения Session – передача данных
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Session["OrderID"] = DropDownList1.SelectedValue;
}
В свойствах выпадающего списка присвойте параметру значение True.

Теперь при изменении текущего знаячения выпадающего списка мы будем видеть более подробную информацию о выбранном заказе. Логика выполнения такова: при изменении значения выпадающего списка в сессию OrderID передается значение идентификатора заказа, затем в соответствии с настройкой источника данных выполняется хранимая SQL – процедура, кооторая возвращает наименования товаров в данном заказе и их количество, что и отображается в "привязанном" к источнику данных .

Для иллюстрации работы элемента управления источником данных нам понадобится следующая процедура, вносящая изменение количества определенного товара в заказе.
CREATE PROCEDURE dbo.Updt (@id int, @newValue int, @goodname nvarchar(50)) AS BEGIN Update dbo.GoodsInOrder set NumberOfGoods=@newValue where OrderID=@id and GoodID = (Select GoodID from dbo.Good where dbo.Good.GoodName = @goodname) END
Затем добавим командную колонку Правка, для этого выберите Правка столбцов в меню задач .

Добавьте столбец Правка, Обновить, Отмена и с помощью стрелок справа от поля Выбранные поля переместите его в начало списка.

В asp – коде для добавьте свойство ReadOnly=true, для колонки GoodName, это необходимо для того, чтобы сделать возможным только изменение поля Number.
<asp:GridView ID="gv_goods" runat="server" AutoGenerateColumns="False"
DataSourceID="ordInfo" onrowupdating="gv_goods_RowUpdating">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="GoodName" HeaderText="GoodName" ReadOnly=true
SortExpression="GoodName" />
<asp:BoundField DataField="NumberOfGoods" HeaderText="NumberOfGoods"
SortExpression="NumberOfGoods" />
</Columns>
У элемента управления есть параметр UpdateString, определяющий sql – команду выполняемую в случае обновления источника данных. Метод Update этого же элемента управления осуществляет непосредственное обновление источника данных, в нашем случае таблицы GoodsInOrder.
Напишем обработчик события RowUpdating для .
C# - код итоговой веб – страницы
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Linq;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web.Security;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class OrderInfo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Session["OrderID"] = DropDownList1.SelectedValue;
}
protected void gv_goods_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int orderID = 0;
try
{
orderID = Convert.ToInt32(Session["OrderID"].ToString());
}
catch (Exception exc)
{
//не очень изящный код, используется исключительно для упрощения самого примера
//по сути, если в сессии у нас нет значений, т.е. не произошла смена значения
// выпадающего списка мы в качестве идентификатора заказа передаем процедуре 1
orderID = 1;
}
int newGoodNumber = 0;
//получаем наименование товара, для которого необходимо поменять количество
string nameOfGood = gv_goods.Rows[e.RowIndex].Cells[1].Text;
foreach (DictionaryEntry newValues in e.NewValues)
{
//поскольку в GridView у нас только один столбец, значение которого можно изменить
// в словаре e.NewValues содержится только одно единственное значение нового количества
//в результате мы получаем измененное количество определенного товара в заказе
newGoodNumber = Convert.ToInt32(e.NewValues[0].ToString());
}
//вызываем процедуру обновления БД с необходимыми параметрами
ordInfo.UpdateCommand = "exec dbo.Updt '"+orderID+"', '"+
newGoodNumber+"', N'"+nameOfGood+"'";
//обновляем БД средствами элемента управления SqlDataSource
ordInfo.Update();
}
}
Результат. При выполнении Правка – изменение числа товара – Обновить, обновляются значения в таблице GoodsInOrder в нашей БД.

В приведенном выше коде отсутствует также проверка правильности вводимых значений. Оставляем это на ваше усмотрение, разумеется, подобные послабления недопустимы в условиях разработки реальных веб – приложений.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.