大家应该比较熟悉outlook里的日程安排,点进去就是一个日历版面,选择某日即可添加当天的日程安排,还有偶尔玩下开心网的兄弟们应该也知道有个日程组件,其实和outlook有点兄弟关系,只不过比outlook做的要漂亮些:) 从VS03到VS08里,ASP.NET一直带有个Calendar日历控件,我不知道历经三代岁月沧桑的交替,这个控件发生了多少变化,不是很清楚,因为从来就没在项目中用过,最近的一个项目倒是提到了这方面的需求,要求用户登录点“会议日程”能显示当前月的日期和相应具体日期有哪些事情等...... ,首先看下面个图,然后依此慢慢详述:
这个是运行系统的原图,下面具体说明下用ASP.NET的日历控件来重新完成这一功能,完整的demo在文章最后有链接地址供下载。
Calendar控件有一个DayRender事件,即是在呈现日时激发,我们的处理程序代码必须写在这个事件下才行,只有这样才能保证在呈现某个日时从数据库加载相应的日程安排来重绘当前日历控件日的日。
首先定义两个一维数组(当然也可以定义一个二维数组),一个记录当前月中的日,一个几个当前月中的日对应的会议标题,如
int[] intArray = new int[999];
title = new string[999];
假设选中的是12月份,从数据库取出的数据可能是这样的intArray [0] = 2,intArray [1] = 2,intArray [3] = 5等 对应的标题数组就是这样的
title[0] = "上午10点开会" title [1] = "下午XX需求讨论" title [2] = "客户系统演示"(没有日程安排的日,那么intArray [i] = 0,后面程序跳出循环的依据正式根据该项的值是否为0来判断的) 这个表示12月2日有两项会议日程安排,12月5日有一项日程安排,这里我定义的数组长度为999相当于每月平均每天30多次会议,一般也不会到这个数了呵呵,如果从数据库读出的当月会议项次超出999次当然会报异常,这里当然也是可以从数据库动态读,实际的必要性也不是很大吧。