2014-11-24 93 views
0

我创建了突出显示所选日期的日历控件。但我不知道如何每天使用不同的颜色。如何在日历中突出显示不同颜色的不同天数asp.net

 <asp:Calendar ID="Calendar1" runat="server" 

      Height="365px" Width="594px" CssClass="myCalendar" 
      OnDayRender="Calendar1_DayRender" OnSelectionChanged="Calendar1_SelectionChanged" > 
      <DayHeaderStyle 
    CssClass="myCalendarDayHeader"/> 
      <DayStyle CssClass="myCalendarDay" Font-Bold="True" Font-Names="Cordia New" 
       Font-Size="30px"/> 
      <SelectedDayStyle 
    CssClass="myCalendarSelector" BackColor="#3366FF"/> 
      <SelectorStyle Wrap="True" CssClass="myCalendarSelector"/> 
      <TitleStyle 
    CssClass="myCalendarTitle" /> 
      <TodayDayStyle CssClass="myCalendarToday"/> 
     </asp:Calendar> 

....

public static List<DateTime> list = new List<DateTime>(); 
    Hashtable HolidayList; 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void Calendar1_SelectionChanged(object sender, EventArgs e) 
    { 
     List<DateTime> newList = (List<DateTime>)Session["SelectedDates"]; 
     foreach (DateTime dt in newList) 
     { 
      Calendar1.SelectedDates.Add(dt); 
     } 
     list.Clear(); 
    } 
    protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) 
    { 

     if (e.Day.IsWeekend == true) 
     { 

      e.Cell.Enabled = false; 
      e.Day.IsSelectable = false; 
      e.Cell.BackColor = System.Drawing.Color.Gray; 
     } 

      if (e.Day.IsSelected == true) 
      { 
       list.Add(e.Day.Date); 
       e.Day.IsSelectable = false; 
      } 
      Session["SelectedDates"] = list; 


    } 

我想添加一个单选按钮,这样我可以改变例如无线电一种颜色是蓝色无线电2是黄色的。任何人都可以有一个想法?

+0

您想突出显示所选日期还是一个月中的所有日期? – Sam 2014-11-24 04:22:23

+0

仅限指定日期 – newb 2014-11-24 06:33:18

+0

好的,请参阅下面的答案 – Sam 2014-11-24 10:57:29

回答

1

好吧,试试这个

AutoPostBack="true"OnSelectedIndexChanged事件添加到RadioButtonList您的标记如下。

<asp:Calendar ID="Calendar1" runat="server" Height="365px" Width="594px" CssClass="myCalendar" 
      OnDayRender="Calendar1_DayRender" OnSelectionChanged="Calendar1_SelectionChanged" > 
      <DayHeaderStyle 
    CssClass="myCalendarDayHeader"/> 
      <DayStyle CssClass="myCalendarDay" Font-Bold="True" Font-Names="Cordia New" 
       Font-Size="30px"/> 
      <SelectedDayStyle 
    CssClass="myCalendarSelector" BackColor="#3366FF"/> 
      <SelectorStyle Wrap="True" CssClass="myCalendarSelector"/> 
      <TitleStyle 
    CssClass="myCalendarTitle" /> 
      <TodayDayStyle CssClass="myCalendarToday"/> 
     </asp:Calendar> 

    <asp:RadioButtonList ID="RadioButtonList1" runat="server" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged" AutoPostBack="true"> 
     <asp:ListItem>Red</asp:ListItem> 
     <asp:ListItem>Yellow</asp:ListItem> 
     <asp:ListItem>Green</asp:ListItem> 
    </asp:RadioButtonList> 

而且,在后面的代码实现OnSelectedIndexChanged事件如下

protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      System.Drawing.Color selColor; 
      switch(RadioButtonList1.SelectedValue) 
      { 
       case "Red": selColor = System.Drawing.Color.Red; 
        break; 
       case "Yellow": selColor = System.Drawing.Color.Yellow; 
        break; 
       default: selColor = System.Drawing.Color.Green; 
        break; 
      } 
      Calendar1.SelectedDayStyle.BackColor = selColor; 

     } 

这就是它!您选择的日期将会以您在RadioButtonList控件中选择的颜色高亮显示。玩的开心!

相关问题