Создать динамические элементы управления календарем - PullRequest
0 голосов
/ 29 апреля 2011

Как генерировать динамические элементы управления на основе выбора пользователем?

Недавно я участвовал в одном практическом тесте, где у них были указанные ниже требования

  1. У них было 2календари (по умолчанию asp.net).

  2. У них было два варианта (список переключателей): один был «Повторить вкл», а другой «Повторен вкл»

Повторите для с выпадающим списком 2:

1) Раскрывающийся день: значения: Каждый, каждый второй день, каждый третий день

2) Выпадающий период: Значения: День, Месяц, Неделя, Год

У Повторяется было 2 выпадающих списка:

1) Неделя: значения были Первая неделя, Вторая неделя, Третья неделя

2) День: воскресенье, понедельник .... суббота

Теперь, когда я выбираю дату первого календаря, например, 10 августа 2010 г., а вторую - 26 января 2011 г., я хотел, чтобы динамические календари былисгенерированный, который будет отображать календари с августа по январь (включая оба)

Для целей фильтра, если я выберу первое воскресенье (из опции REPEATED ON), то следует выбрать первое воскресенье динамических календарей.Если я выбираю каждый третий день, то должен выбираться каждый третий день (в динамически генерируемых календарях)

Что я сделал: мог генерировать динамические календари, создавая объект класса календаря ... это правильно?Кроме того, я искал в Google, и они показали, что DayRender Event может быть возможным решением, но это не помогло ...

Как это сделать?Как создать динамический календарь?

Пожалуйста, дайте мне знать, если вопрос не понят.

Передайте мне код, похожий на тот, что меньше всего

спасибо!

1 Ответ

0 голосов
/ 29 апреля 2011

Похоже, что вы хотите сделать, это установить свойства Calendar.SelectedDate и Calendar.VisibleDate.

Я точно не знаю, для чего вы собираетесь, так как я не знаю, какой тип контроля пользователь выберет для вас даты 1 января / 1 января, или какое отношение это имеет к 3-му воскресению. Есть только один календарь? Пожалуйста, объясните немного больше, если информация ниже не поможет вам.

Я вставлю код VB из одного из моих приложений, надеюсь, он вам поможет.

Protected Sub calArrival_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles calArrival.SelectionChanged
    SetFormDepartureEntry()

    lblArrivalDate.Text = calArrival.SelectedDate.ToLongDateString
    calDeparture.SelectedDate = calArrival.SelectedDate
    calDeparture.VisibleDate = calArrival.SelectedDate
    dtSelectedArrival = "1/1/2000"

    'Determine if we need to see 2 months to view all possible departure dates.
    If (DatePart(DateInterval.Month, calDeparture.SelectedDate) <> _
        DatePart(DateInterval.Month, DateAdd(DateInterval.Day, 14, calDeparture.SelectedDate))) Then
        calDeparture2.Visible = True
        calDeparture2.SelectedDate = Nothing
        calDeparture2.VisibleDate = DateAdd(DateInterval.Month, 1, calDeparture.SelectedDate)
    Else
        calDeparture2.Visible = False
    End If
    End Sub

Хорошо, теперь, когда вы опубликовали детали, это становится другим вопросом. Вы не знаете, сколько календарей вам нужно, поэтому вы, вероятно, захотите создать их в коде. Я бы предложил использовать элемент управления Panel в вашей разметке, чтобы содержать все возможные календари результатов. Затем, как вы предложили ранее, создайте новые объекты Календаря по мере необходимости и добавьте их в коллекцию элементов управления «якорной» панели.

Calendar objCal = new Calendar();
pnlResultsContainer.Controls.Add(objCal);

Что касается установки выбранных дней, вы можете иметь только один "выбранный" день для календаря, как мне кажется. Однако вы можете установить стили рендеринга, а также включить ли день и т. Д., Обработав событие Calendar.DayRender. Может быть, кто-то может помочь мне настроить обработчик для динамически создаваемых элементов управления в C #? Я думаю, что-то вроде:

objCal.DayRender += AddressOf(DynamicDayRenderHandler());

Пожалуйста, исправьте, если это не так.

Определение правильного дня для установки стилей в обработчике будет зависеть от кода объекта DayRenderEventArgs.Day, который является параметром события. Я не знаю, как найти определенные дни / интервалы, которые вы ищете, но это должно быть возможно с небольшим исследованием в следующих статьях:

Как: настроить отдельные дни в элементе управления веб-сервером календаря

DayRenderEventArgs.Day Property

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...