Telerik RadCalendar - Specialdays:如何显示特殊日期的日期

时间:2010-07-04 07:45:48

标签: c# asp.net calendar telerik

我不熟悉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控件中使用嵌入式皮肤。将所选日期指定为特殊日期时,不会显示单元格的日期。 我必须在相关SpecialDay的Content标签中显示日期。但我找不到一种方法来访问内容中定义的lblTemp1控件。

如果我的做法不对,请你指出正确的方向吗? 或者任何在lblTemp1.Text中显示日期的建议都表示赞赏。

谢谢!

2 个答案:

答案 0 :(得分:1)

Impulse,我认为最简单的方法是设置挂钩Telerik日历的DayRender事件的选定日期的背景。我发现this online example可能对您有用。

答案 1 :(得分:0)

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);