fullCalendar在C#下的应用

前端Jquery代码,这是格式化过日期的:

 

后台用一般处理程序已.ashx结尾的文件进行操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ProjectTask.DAL;
using ProjectTask.Interface;
using ProjectTask.Constants;

namespace ProjectTask.Portal.ISAPI
{
    public class AttenceType
    {
        public int id { get; set; }
        public string title { get; set; }
        public string start { get; set; }
        public string end { get; set; }
        public string url { get; set; }
        public int accountId { get; set; }
    }
    ///


    /// fullcalendar 的摘要说明
    ///

    public class fullcalendar : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            DateTime startDate = new DateTime(1970, 1, 1);
            DateTime endDate = new DateTime(1970, 1, 1);
            try
            {
                startDate = startDate.AddSeconds(double.Parse(context.Request.QueryString["start"]));
                endDate = endDate.AddSeconds(double.Parse(context.Request.QueryString["end"]));
            }
            catch
            {
                startDate = DateTime.Today;
                endDate = DateTime.Today.AddDays(1);
            }
            using (XHW_ProjectTaskEntities DBContext = new XHW_ProjectTaskEntities())
            {
                List testEventsData = new List();
                int LastDay = new DateTime(startDate.Year, startDate.AddMonths(1).Month, 1).AddMonths(1).AddDays(-1).Day;
                IEnumerable IELeaveOff = DBContext.LeaveOff.Where(p => p.Start >= startDate && p.End <= endDate);
                if (IELeaveOff.Count() > 0)
                {
                    for (int i = 1; i <= LastDay; i++)
                    {
                        int NormalAttence = 0;
                        int WorkOverTimeHolidayAttence = 0;
                        int leaveAttence = 0;
                        DateTime NowDate = new DateTime(startDate.Year, startDate.AddMonths(1).Month, i);
                        DateTime EndDate = NowDate.AddDays(1).AddSeconds(-1);
                        foreach (LeaveOff item in IELeaveOff)
                        {
                            if (item.Start >= NowDate && item.End <= EndDate)
                            {
                                if (item.TypeID.Equals(AttendanceWorkType.办公室出勤) || item.TypeID.Equals(AttendanceWorkType.外出出勤))
                                {
                                    NormalAttence++;
                                }
                                if (item.TypeID.Equals(AttendanceWorkType.加班) || item.TypeID.Equals(AttendanceWorkType.产假) || item.TypeID.Equals(AttendanceWorkType.丧假) || item.TypeID.Equals(AttendanceWorkType.调休) || item.TypeID.Equals(AttendanceWorkType.有薪病假) || item.TypeID.Equals(AttendanceWorkType.年假) || item.TypeID.Equals(AttendanceWorkType.婚假) || item.TypeID.Equals(AttendanceWorkType.产假) || item.TypeID.Equals(AttendanceWorkType.陪产假))
                                {
                                    WorkOverTimeHolidayAttence++;
                                }
                                if (item.TypeID.Equals(AttendanceWorkType.事假) || item.TypeID.Equals(AttendanceWorkType.其他) || item.TypeID.Equals(AttendanceWorkType.病假))
                                {
                                    leaveAttence++;
                                }
                            }
                        }
                        if (NormalAttence != 0 || WorkOverTimeHolidayAttence != 0 || leaveAttence != 0)
                        {
                            int toatlPeople = DBContext.User.Where(p => p.IsValid).Count();
                            if (toatlPeople > 0)
                            {
                                testEventsData.Add(new AttenceType { accountId = 0, title = string.Concat("正常出勤", (toatlPeople - WorkOverTimeHolidayAttence - leaveAttence), "人"), start = NowDate.ToString("yyyy-MM-dd"), id = 0 });
                                testEventsData.Add(new AttenceType { accountId = 1, title = string.Concat("加班/调休", WorkOverTimeHolidayAttence, "人"), start = NowDate.ToString("yyyy-MM-dd"), id = 1 });
                                testEventsData.Add(new AttenceType { accountId = 2, title = string.Concat("请假", leaveAttence, "人"), start = NowDate.ToString("yyyy-MM-dd"), id = 2 });
                            }
                        }
                    }
                }
                System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                String sJSON = oSerializer.Serialize(testEventsData);
                context.Response.ContentType = "application/json.";
                context.Response.Write(sJSON);
            }
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();这个类可以直接把对象处理为一个标准的Json数组。

你可以把你所要的数据放入一个List集合里面转换为JSon数组传递到前台处理。

效果图如下

你可能感兴趣的:(C#)