Столбец | Тип | Примечания |
---|---|---|
ID | AutoNumber, первичный ключ | Идентификационный номер помещения |
Room | Text, требуемое значение, 50 символов | Название помещения |
Таблица Events
содержит следующие столбцы:
Столбец | Тип | Примечания |
---|---|---|
ID | AutoNumber, первичный ключ | Идентификационный номер события |
Name | Text, требуемое значение, 255 символов | Название события |
Room | Number, требуемое значение | Идентификатор помещения для события |
AttendeeList | Memo, требуемое значение | Список имен почетных гостей |
EventData | Date/Time, требуемое значение | Дата события |
Несколько событий представлены в загружаемой базе данных.
Соединение с базой данных
Два элемента управления, которые мы хотели бы связать с данными, — attendeeList
и roomList
. Чтобы сделать это, мы должны задать свойства DataSource
этих элементов управления как таблицы, содержащие данные. Код должен загрузить данные в эти таблицы и выполнить соединение. Оба эти элемента управления имеют также свойства DataTextField
и DataValueField
, которые определяют, какие столбцы использовать для вывода элементов списка и задания свойств value
, соответственно. В обоих случаях можно задать эти свойства во время проектирования как Name
и ID
, что будет использоваться, как только задается свойство DataSource
для заполнения элементами списка элемента управления.
Теперь мы можем сделать это в построителе форм Web. Удалите существующие записи из кода ASP.NET для этих элементов управления. Теперь что объявления будут выглядеть следующим образом:
...
<asp:dropdownlist id='roomList' runat='server' width='160px' datatextfield='Room' datavaluefield='ID' / >
...
<asp:listbox id='attendeeList' runat='server' width='160px' selectionmode='Multiple' rows='6' datatextfield='Name' datavaluefield=' ' >
Следующая задача состоит в создании соединения с базой данных. Существует несколько способов это сделать. Как мы видели в главе ADO.NET ранее, обычно для создания нового соединения используется окно Server Explorer. Так как мы работаем с Access, то тип провайдера для этого соединения будет Microsoft Jet 4.0 OLE DB Provider. Когда это будет задано в окне сервера, мы сможем перетащить соединение на форму Web, что добавит объект Data.OleDb.OleDbConnection
к форме с именем oleDbConnection1
:
public class WebForm1: System.Web.UI.Page {
...
protected System.Data.OleDb.OleDbConnection oleDbConnection1;
SqlClient.SqlConnection
.
В метод InitializeComponent()
также добавится код для задания свойства ConnectionString
формы oleDbConnection1
, таким образом все будет готово для использования в коде.
Мы хотим выполнить соединение данных в обработчике событий Page_Load()
, так что элементы управления будут полностью заполнены, когда мы захотим использовать их в других частях кода. Приступаем к считыванию данных из базы данных, независимо от того, выполняется ли в данный момент операция обратной отправки (даже если элементы управления списком будут сохранять свое содержимое с помощью viewstate), чтобы гарантировать, что мы имеем доступ ко всем данным, которые могут понадобиться, хотя нам и не нужно выполнять само соединение данных при обратной отправке. Это может показаться слегка расточительным, но читатель при желании может в качестве упражнения добавить дополнительную логику к коду для оптимизации такого поведения. Здесь мы сосредоточимся на том, как заставить все работать, не входя в практические детали.
Весь наш код будет помещен между вызовами методов Open()
и Close()
нашего объекта соединения:
private void Page_Load(object sender, System.EventArgs e) {
validationSummary.Enabled = false;