Private-Bookers
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:
Events

Таблица

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;

Для соединения SQL Server будет добавлен объект

SqlClient.SqlConnection
.

В метод

InitializeComponent
также добавится код для задания свойства
ConnectionString
формы
oleDbConnection1
, таким образом все будет готово для использования в коде.

Мы хотим выполнить соединение данных в обработчике событий

Page_Load
, так что элементы управления будут полностью заполнены, когда мы захотим использовать их в других частях кода. Приступаем к считыванию данных из базы данных, независимо от того, выполняется ли в данный момент операция обратной отправки (даже если элементы управления списком будут сохранять свое содержимое с помощью viewstate), чтобы гарантировать, что мы имеем доступ ко всем данным, которые могут понадобиться, хотя нам и не нужно выполнять само соединение данных при обратной отправке. Это может показаться слегка расточительным, но читатель при желании может в качестве упражнения добавить дополнительную логику к коду для оптимизации такого поведения. Здесь мы сосредоточимся на том, как заставить все работать, не входя в практические детали.

Весь наш код будет помещен между вызовами методов

Open
и
Close
нашего объекта соединения:

private void Page_Load(object sender, System.EventArgs e) {

 validationSummary.Enabled = false;

 foreach (System.Web.UI.WebControls.WebControl validator in this.Validators) {

validator.Enabled = false;

 }

 oleDbConnection1.Open;

 if (!this.IsPostBack) {

calendar.SelectedDate = System.DateTime.Now;

 }

 OleDbConnection1.Close;

}

Мы вскоре увидим, почему задание данных календаря оставлено внутри этого кода проверки обратной отправки.

Для обмена данными нам необходимо использовать несколько объектов хранения данных. Мы можем объявить их на уровне класса, чтобы мы имели к ним доступ из других функций. Нам понадобится объект

DataSet
для хранения информации базы данных, три объекта
OleDb.OleDbDataAdapter
для выполнения запросов на множестве данных и объект
DataTable
хранения событий для последующего доступа. Они объявляются следующим образом:

public class WebForm1 : System.Web.UI.Page {

 ...

 protected System.Data.DataSet ds;

 protected System.Data.DataTable eventTable;

 protected System.DataOleDb.OleDbDataAdapter daAttendees;

 protected System.DataOleDb.OleDbDataAdapter daRooms;

 protected System.Data.OleDb.OleDbDataAdapter daEvents;

Существуют версии SQL Server всех объектов OLE DB, и их использование идентично.

  • Читать дальше
  • 1
  • ...
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка