下面先熟悉下Calarder控制項的常用屬性:
SelectionMode:是指定是否可選擇天、周、整月,是一個CalendarSelectionMode枚舉;
SelectedDate:是得到或設定當前選擇的時間,是一個DateTime結構;
VisibleDate:是得到或設定日曆顯示的日期,是一個DateTime結構;
PrevMonthText:是切換上個月的符號,可以用‘上個月’表示,是string類型;
NextMonthText:是切換下個月的符號,可以用‘下個月’表示,是string類型;
SelectMonthText:是顯示選擇整個月的符號,可以用‘選擇整月’表示,是string類型;
SelectWeekText:是顯示選擇整個周的符號,可用‘選擇’表示,是string類型;
ShowGridLines:是否顯示出網格線,是Boolean類型;
常用事件:
SelectionChanged:當選擇一個日期時觸發;
DayRender:當在載入日曆控制項時觸發,相當於OnRender事件;
VisibleMonthChanged:只要對月份進行操作都觸發;
下面進入正題,怎麼實現自訂日曆控制項:
1.在Page_Init方法中執行個體化個String型二維數組分別是以月份和天數做長度,再把對應日期的節日寫出來以便後面顯示,如:
| 代碼如下 |
複製代碼 |
private string[][] arr; protected void Page_Init(object sender, EventArgs e) { arr = new string[13][] ;//分別為 月 for (int i = 0; i < 13; i++) { arr[i] =new string[32];//為年、月進行賦值 } arr[1][1] = "元旦節"; arr[2][14] = "情人節"; arr[3][8] = "婦女節"; arr[3][20] = "姐姐的生日"; arr[3][12] = "植樹節"; arr[4][16] = "媽媽的生日"; arr[4][29] = "我的生日"; arr[5][1] = "勞動節"; arr[6][1] = "兒童節"; arr[7][1] = "建黨節"; arr[8][1] = "建軍節"; arr[8][10] = "爸爸的生日"; arr[9][10] = "教師節"; arr[10][1] = "國慶節"; arr[12][24] = "平安夜"; arr[12][25] = "聖誕節"; } |
2.主要在DayRender事件進行操作;
| 代碼如下 |
複製代碼 |
protected void Calendar3_DayRender(object sender, DayRenderEventArgs e) { CalendarDay day = e.Day;//設定當前日期 TableCell cells = e.Cell;//設定表格 if (day.IsOtherMonth)//如果是其它節內容就清除本節內容Calendar是個日期限制的; { cells.Controls.Clear(); } else { try { string txt = arr[day.Date.Month][day.Date.Day];//得到完整的月、日與數組進行匹配 if (!string.IsNullOrEmpty(txt))//判斷當前是否有節日 { cells.Controls.Add(new LiteralControl(string.Format("<br><font color=red>{0}</font>", txt)));//把這個 紅色的字串 加在顯示的日期後面 } } catch (Exception) { Response.Write("<font color='red'><h1>分頁錯誤!</h1></font>"); } } } |
到了這裡就可完成顯示了,但我們想得到部落格園那樣顯示出連結的日曆,比如:今天發了篇部落格,就要把今天的日期高亮顯示並具有超連結,那又該怎麼實現呢?第二篇部落格再講述。