sawyes

不要害怕失败,要勇敢向前

JQuery FullCalendar(一)

FullCalendar官网:http://arshaw.com/fullcalendar

FullCalendar中文API:http://blog.sina.com.cn/s/blog_9475b1c101012c5f.html

FullCalendar日历插件说明文档http://www.helloweba.com/view-blog-231.html

 

一、准备相关JS文件

<link href="CSS/fullcalendar.css" rel="stylesheet" type="text/css" />
<script src="JS/jquery-1.9.1.js" type="text/javascript"></script>
<script src="JS/jquery-ui-1.10.3.custom.min.js" type="text/javascript"></script>
<script src="JS/fullcalendar.min.js" type="text/javascript"></script>

 

二、JS代码

FullCalendar通过events的设置向数据源请求数据,要求返回的JSON数据格式如下

[
    {
        "id": 1,
        "title": "正常上班",
        "start": "2013/11/19 17:26:54",
        "end": "2013/11/19 17:26:54",
        "url": null,
        "allDay": "True",
        "color": "#666"
    }
]

待会根据这个格式,设计数据库

fullCalendar工具:formatDate
调用方法:$.fullCalendar.formatDate(time,formatstring)

events设置数据源,同时可以传递start,end两个参数,该视图的第一天日期和最后一天日期(并非该月或者星期)

<script type="text/javascript">
        $(function () {
            $('#calendar').fullCalendar({
                header: {//set header info
left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' }, firstDay: 7, editable: true, //send startParam,endParam to json.ashx events: function (start, end, callback) { $.getJSON("json.ashx", { "start": $.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss"), "end": $.fullCalendar.formatDate(end,"yyyy-MM-dd HH:mm:ss") }, function (json) { callback(json); }); }
            });
        });
    </script>

 

三、HTML代码

<div id='calendar'></div>

 

四、数据库设计

创建数据表calendar表,包含字段:

id(int ,not null),

title(nvarchar(200),not null),

start(datetime, not null),

end(datetime, defaultValue:1970/1/1 8:00:00),

url(nvarchar(200)),

allDay(bit),

color(nvarchar(200) ,defaultValue:#666),

title和start是必要的字段

五、后台json.ashx,返回json数据

              DateTime start = Convert.ToDateTime( context.Request["start"]);
            DateTime end = Convert.ToDateTime( context.Request["end"]);
            AddNewsDataContext db = new AddNewsDataContext();
            var res = from i in db.calendar
                      //注意时间的开闭区间
                      where i.start >= start && i.start <= end || i.end >= start && i.end <= end 
                      select new
                      {
                          id = i.Id,
                          title=i.title,
                          start = i.start.Value.Year + "/" + i.start.Value.Month + "/" + i.start.Value.Day + " " + i.start.Value.Hour + ":" + i.start.Value.Minute + ":" + i.start.Value.Second ,
                          end = i.end.Value.Year + "/" + i.end.Value.Month + "/" + i.end.Value.Day + " " + i.end.Value.Hour + ":" + i.end.Value.Minute + ":" + i.end.Value.Second,
                          url=i.url.ToString(),
                          allDay=i.allDay,
                          color=i.color.ToString()
                      };
            JavaScriptSerializer jss = new JavaScriptSerializer();
            string json=jss.Serialize(res);
            context.Response.Write(json);

六、效果

allDay为false的时候显示时间

image

posted on 2013-11-20 11:35  sawyes  阅读(1214)  评论(0编辑  收藏  举报

导航