Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

Извлечение даты из

DataTable
удивительно просто:

testDate = (System.DateTime)testRow["EventDate"];

Преобразование данных столбца в

System.DateTime
работает прекрасно.

Итак, прежде всего используем

getFreeDate
в
Page_Load
. Это просто означает внесение небольшого изменения в код, который задает свойство календаря
SelectedDate
:

if (!this.IsPostBack) {

 System.DateTime trialDate = System.DateTime.Now;

 calendar.SelectedDate = getFreeDate(trialDate);

 this.DataBind;

}

Затем нам нужно ответить на выбор даты в календаре. Чтобы сделать это, просто добавим обработчик событий для события календаря

SelectionChanged
и выполним сравнение даты с датами существующих мероприятий:

protected void calendar_SelectionChanged(object sender, System.EventArgs e) {

 System.DateTime trialDate = calendar.SelectedDate;

 calendar.SelectedDate = getFreeDate(trialDate);

}

Этот код идентичен коду в

Page_Load
.

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

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

DayRender
объекта календаря. Это событие происходит всякий раз при изображении отдельного дня и предоставляет нам доступ к объекту выводимой ячейки и дате этой ячейки с помощью свойств
Cell
и Date параметра
DayRenderEventArgs
функции обработчика. Нам нужно просто сравнить дату изображаемой ячейки с датами в объекте
eventTable
и покрасить ячейку с помощью свойства
Cell.BackColor
, если существует совпадение:

protected void calendar_DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e) {

 if (eventTable.Rows.Count > 0) {

System.DateTime testDate;

fоreach (System.Data.DataRow testRow in eventTable.Rows) {

testDate = (System.DateTime)testRow["EventDate"];

if (testDate.Date == e.Day.Date) {

e.Cell.BackColor = Color.Red;

}

}

 }

}

В данном случае используется красный цвет, который дает нам следующее изображение:

Здесь 15, 27, 28, 29 и 30 марта содержат мероприятия, а пользователь выбирает 17 марта. Теперь, после добавления логики выбора даты, невозможно выбрать день, который показан красным цветом, и если делается такая попытка, то вместо этого будет выбрана следующая дата. Например, щелчок на 28 марта в показанном выше календаре приведет к выбору 31 марта.

Запись мероприятий в базу данных

Обработчик событий

submitButton_Click
в настоящее время собирает строку из характеристик мероприятия и выводит ее в элементе управления
resultLabel
. Чтобы добавить мероприятие в базу данных, нужно реформатировать созданную строку в запрос SQL
INSERT
и выполнить его.

Большая часть следующего кода выглядит знакомо:

protected void submitButton_Click(object sender, System.EventArgs e) {

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

validator.Enabled = true;

 }

 this.Validate;

 if (this.IsValid) {

String attendees = "";

foreach (ListItem attendee in attendeeList.Items) {

if (attendee.Selected) {

attendees += attendee.Text + " (" + attendee.Value + "), ";

}

}

attendees += " and " + nameBox.Text;

String dateString =

calender.SelectedDate.Date.Date.ToShortDateString;

String oleDbCommand = "INSERT INTO Events (Name, Room, " +

"AttendeeList, EventDate) VALUES ('" + eventBox.Text + "', '" +

roomList.SelectedItem.Value + "', '" +

attendees + "', '" + dateString + "')";

После создания строки запроса SQL можно использовать ее для построения объекта

OleDb.OleDbCommand
:

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

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: