validator.Enabled = false;
}
…
}
В методе submitButton_Click()
мы сразу включаем все элементы управления проверкой, за исключением итогового, что заставляет их проверять свои соответствующие элементы управления, вызывая метод формы isValid()
, и затем проверять, как и раньше, свойство IsValid
. Мы добавляем также в эту проверку предложение else, которое снова включает итоговую проверку, если оказывается, что IsValid
задан как false
. Это предоставляет пользователю обратную связь тогда и только тогда, когда элементы управления имеют недопустимые данные и нажата кнопка отправки.
protected void submitButton_Click(object sender, System.EventArgs e) {
foreach (System.Web.UI.WebControls.WebControl validator in this.Validators) {
validator.Enabled = true;
}
this.Validated);
if (this.IsValid) {
…
} else {
validationSummary.Enabled = true;
}
}
В результате этого эффективно отключается проверка на клиентской стороне, что стоит затраченных усилий, так как предоставляет дополнительное удобство использования.
ADO.NET и связывание данных
Созданное в предыдущем разделе приложение формы Web является полностью функциональным, но содержит только статические данные. Кроме того, событие процесса заказа не содержит устойчивых данных события. Чтобы решить обе эти проблемы, можно воспользоваться ADO.NET и получить доступ к данным, хранящимся в базе данных, так чтобы можно было сохранять и извлекать данные события вместе со списками помещений и служителей.
Соединение данных делает процесс извлечения данных еще легче. Элементы управления, такие как поля списков (и некоторые из более специальных элементов управления) готовы к использованию этой техники. Они могут быть связаны с любым объектом, который предоставляет интерфейс IEnumerable
, ICollection
или IListSource
, что включает объекты DataTable
.
В этом разделе мы начнем с модернизации нашего приложения события заказа помещения, а затем пойдем дальше и рассмотрим некоторые другие вещи, которые можно делать со связыванием данных, используя другие элементы управления Web.
Модернизация приложения заказа помещения
Создадим новое приложение Web с именем PCSWebApp3
и скопируем код из созданного ранее приложения PCSWebApp2
. Прежде чем начать новый код, давайте рассмотрим базу данных, к которой мы будем обращаться.
База данных
Для этого примера используем базу данных Microsoft Access с именем PCSWebApp3.mdb
, которую можно найти вместе с загружаемым кодом для этой книги. Для учета масштаба предприятия имеет смысл использовать базу данных SQL Server, но хотя используемая техника практически одинакова, но Access все же облегчает процесс тестирования. В ходе изложения будут показаны необходимые различия в коде, когда они возникнут. Представленная база данных содержит три таблицы:
□ Attendees
содержит список возможных почетных гостей событий.
□ Rooms
содержит список возможных помещений для событий.
□ Events
содержит список заказанных событий.
Таблица Attendees
содержит следующие столбцы:
Столбец | Тип | Примечания |
---|---|---|
ID | AutoNumber, первичный ключ | Идентификационный номер почетного гостя |
Name | Text, необходимое значение, 50 символов | Имя почетного гостя |
Text, необязательное значение, 50 символов | Адрес e-mail почетного гостя |
База данных позволяет хранить сведения о 20 почетных гостях, каждый из которых может иметь адрес e-mail. Другое приложение может автоматически посылать письмо почетным гостям после выполнения заказа. Читателям предлагается реализовать такое приложение в качестве упражнения.
Таблица Rooms
содержит следующие столбцы: