最近做毕设,期间想到使用calendar来创建一个显示重要事件提示的日历。由于区域有限,这个日历仅仅只能显示日期等。所以不能为其再添加文本了,只能在其下方添加超链触发alert事件来提示消息。
- 首先建立了一个用来存储消息等数据表,其中需要添加 相应需要提醒日期的列,和对应消息的列,不做赘述。
- 再次建立两个界面,一个用来在后台添加删除添加的数据,另一个用来显示这个日历。
☆:日期事件添加管理
前台:一个Label,一个Calendar,一个Textbox,一个button,一个可以提供删除列的Gridview。
后台:
1 protected void Calendar1_SelectionChanged(object sender, EventArgs e) 2 { 3 Label1.Text = Calendar1.SelectedDate.ToShortDateString(); 4 } 5 protected void Button1_Click(object sender, EventArgs e) 6 { //这里使用三层来将数据添加到数据库 7 DateTime day = Calendar1.SelectedDate; 8 string msg = TextBox1.Text; 9 10 Calender calender = new Calender(); 11 CalenderBll bll = new CalenderBll(); 12 13 calender.Msgtime = day; 14 calender.UserID = Session["UserID"].ToString(); 15 calender.Msg = msg; 16 calender.Createtime = DateTime.Now; 17 18 if (!bll.Exists(day)) 19 { 20 if (bll.Add(calender)) 21 { 22 Response.Write("<script>alert(‘发布成功!‘);"); 23 } 24 else 25 { 26 Response.Write("<script>alert(‘发布失败!‘)</script>"); 27 } 28 29 } 30 else 31 { 32 Response.Write("<script>alert(‘该日期时间已存在!‘)</script>"); 33 } 34 } 35 protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) 36 { 37 if (e.Day.Date< DateTime.Now ) 38 { 39 e.Day.IsSelectable = false;//用来控制该日是否可以选取 40 } 41 }
☆:前台显示界面
主要为Calendar控件
1 protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) 2 { 3 DateTime today = DateTime.Today; 4 DataSet dt = new DataSet(); 5 6 //这里使用了三层架构来从数据库中获取具有消息事件的日期和相应的消息 7 CalenderBll calbll = new CalenderBll(); 8 //注意AddDays方法的使用,来遍历当天前后30天的事件 9 string begin = today.AddDays(Convert.ToDouble(-30)).ToString(); 10 string to = today.AddDays(Convert.ToDouble(30)).ToString(); 11 12 dt = calbll.GetList(begin, to); 13 if (dt !=null) 14 { 15 for (int i = 0; i < dt.Tables[0].Rows.Count; i++) 16 { 17 string day = dt.Tables[0].Rows[i]["Msgtime"].ToString(); 18 if (e.Day.Date.ToString().Substring(0,10) == day.Substring(0,10)) 19 { 20 e.Cell.BackColor = System.Drawing.Color.Red; 21 //下面是次愚蠢的尝试,如果不修改cell.text则导致日期旁边出现数字,尽管可以修改为标志或图片,但是会影响布局 22 //半天才搞明白,为啥不在原来的基础上给他添加上链接啊,真是脑袋想不清。 23 //e.Cell.Controls.Add(new LiteralControl("<a href=‘javascript:void(0)‘ onclick="+‘"‘+"showmsg(‘"+dt.Tables[0].Rows[i]["Msg"]+"‘)"+‘"‘+">"+e.Day.DayNumberText+"</a>")); 24 e.Cell.Text ="<a href=‘javascript:void(0)‘ onclick="+‘"‘+"showmsg(‘"+dt.Tables[0].Rows[i]["Msg"]+"‘)"+‘"‘+">"+e.Day.DayNumberText+"</a>"; 25 } 26 } 27 }
时间: 2024-10-03 23:00:13