• Microsoft .NET
  • ASP.NET
  • Создание элемента управления Calendar (календарь), использующего AJAX

Создание элемента управления Calendar (календарь), использующего AJAX - Исследуем код элемента управления Calendar

ОГЛАВЛЕНИЕ

Исследуем код элемента управления Calendar

Класс code-behind пользовательского элемента управления (User Control) определяет несколько свойств и включает в себя код заполнения DropDownList месяца\года, а также взаимодействия пользователя с календарем. Самым важным свойством является DateTextFromValue, которое устанавливает и получает выбранную дату. Данное свойство просто читает и записывает значение в DateTextFrom TextBox.

public string DateTextFromValue
{
    get { return DateTextFrom.Text; }
    set { DateTextFrom.Text = value; }
}

Примечание: Приведенный в конце статьи код включает в себя версию пользовательского элемента управления (User Control) написанную как на VB, так и на C# ...

Два дополнительных свойства определены для указания того, что RequiredFieldValidator должен быть активирован (DateTextRequired), а также  для вывода сообщения об ошибке, если требуемое значение даты не предоставлено (DateTextRequiredText).

DropDownLists месяца\года заполняются методами Populate_MonthList и Populate_YearList, которые вызываются при первом посещении страницы. Populate_MonthList возвращает список названий месяцев (January, February, ...) в то время как Populate_YearList заполняет DropDownList годами, начиная с 20 года до момента заполнения и заканчивая следующим годом.

В  том случае если  изменены DropDownList месяца\года, вызывается частичный постбэк и выполняется метод Set_Calendar. Метод Set_Calendar устанавливает свойство TodaysDate элемента Calendar в первый выбранный месяц\год.

public void Set_Calendar(object Sender, EventArgs E)
{
    string theDate = drpCalMonth.SelectedItem.Value + " 1, " + drpCalYear.SelectedItem.Value;

    DateTime dtFoo;
    dtFoo = System.Convert.ToDateTime(theDate);

    Calendar1.TodaysDate = dtFoo;
}

Когда пользователь выбирает дату в календаре, вызывается частичный постбэк и событие SelectionChanged элемента Calendar. Обработчик события Calendar1_SelectionChanged вызывает метод Commit элемента PopupControlExtender, передавая свойство SelectedDate элемента Calendar. Результатом является то, что элемент Calendar исчезает и выбранная дата отображается в TextBox.

protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
    PopupControlExtender1.Commit(Calendar1.SelectedDate.ToShortDateString());
}