Telerik RadCalendar - Specialdays: Как отобразить дату специального дня - PullRequest
2 голосов
/ 04 июля 2010

Я не знаком с компонентом RadCalendar.Прошу смириться со мной, если мой вопрос - это базовая функциональность.

Моя цель - отображать выбранные дни с различными значениями BackColor в соответствии с выбором клиента.Для меня приемлемо только изменение ItemStyle на выбранные дни, но я не мог найти, как это сделать?Поэтому я попробовал другой подход следующим образом:

Я создал SpecialDays в своем календаре

<telerik:RadCalendar AutoPostBack="true" ID="calendar1" runat="server"  Width="400px" Height="300px" FirstDayOfWeek="Monday">
            <SpecialDays>
                <telerik:RadCalendarDay TemplateID="temp1"></telerik:RadCalendarDay>
            </SpecialDays>
            <SpecialDays>
                <telerik:RadCalendarDay TemplateID="temp2"></telerik:RadCalendarDay>
            </SpecialDays>
            <SpecialDays>
                <telerik:RadCalendarDay TemplateID="temp3"></telerik:RadCalendarDay>
            </SpecialDays>
            <CalendarDayTemplates>
                <telerik:DayTemplate ID="temp1" runat="server">
                    <Content>
                       <asp:Label ID="lblTemp1" runat="server"></asp:Label>
                    </Content>
                </telerik:DayTemplate>
                <telerik:DayTemplate ID="temp2" runat="server">
                        <Content>
                            <asp:Label ID="lblTemp2" runat="server"></asp:Label>
                        </Content>
                </telerik:DayTemplate>
                <telerik:DayTemplate ID="temp3" runat="server">
                        <Content>
                            <asp:Label ID="lblTemp3" runat="server"></asp:Label>
                        </Content>
                </telerik:DayTemplate>                    
            </CalendarDayTemplates>
        </telerik:RadCalendar>

И в коде позади я назначаю выбранные дни желаемому шаблону, когда клиент нажимаетКнопка выбора как SetAstemp1, SetAstemp2 или SetAstemp3:

protected void BtnSetAsTemp1_Click(object sender, EventArgs e)
    {
        int daysCount = calendar1.SelectedDates.Count;

        for (int i = 0; i < daysCount; i++)
        {
            RadCalendarDay day = new RadCalendarDay();
            day.TemplateID = "temp1";
            day.Date = calendar1.SelectedDates[i].Date;
            calendar1.SpecialDays.Add(day);

        }
    }

Но при таком подходе я не могу использовать встроенный скин в элементе управления RadCalendar.Когда выбранный день назначается особому дню, дата ячейки не отображается.И я должен показать дату в теге Content соответствующего SpecialDay.Но я не смог найти способ доступа к элементу управления lblTemp1, определенному в Контенте.

Не могли бы вы указать мне правильное направление, если мой подход не верен?Или любые предложения по отображению даты в lblTemp1.Text приветствуется.

Спасибо!

Ответы [ 2 ]

1 голос
/ 05 июля 2010

Импульс, я думаю, что самый простой способ - установить фоновый цвет для выбранных дат, перехватывая событие DayRender календаря Telerik. Я нашел этот онлайн пример , который может быть полезен для вас.

0 голосов
/ 23 апреля 2016
RadCalendarDay holiday = new RadCalendarDay();
holiday.Date = Datetime.Now;//Your date which you want
holiday.IsSelectable = false;
holiday.IsDisabled = true;
holiday.ToolTip = "NOT AVAILABLE";
TableItemStyle style = new TableItemStyle();
style.BackColor = Color.HotPink;
holiday.ItemStyle.CopyFrom(style);
calendar1.SpecialDays.Add(holiday);
...