2015-11-04 98 views
1

我对这个主题进行了更多的了解,但没有清楚,所以任何人都可以提供帮助。Jquery完整的日历 - 只获取当前的查看事件

我正在使用JQuery FullCalendar与asp.net mvc和ajax来获取大量的事件。

我想限制只显示当前视图的事件,当用户点击next/prev时,他们加载该视图的事件等等。

$("#calendar").fullCalendar({ 
    header: { 
     left: 'prev,next today', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
    }, 
    editable: true, 
    height: 'auto', //altfel se prelungea mult in jos 
    defaultView: 'agendaWeek', 
    events: "/calendar/GetAllCalendarEvents/" //gets the events. 
}); 

我看到了开始/结束日期,但是您如何使用它?我只想根据这些日期从服务器获取数据,但是当你点击next/prev来获取新时间段事件时。

任何人都可以帮忙吗?

回答

0

“开始”和“结束”参数是unix时间戳。你可以有一个控制器的行动,需要像这样的时间戳:

public static DateTime FromUnixTimestamp(this double timestamp) 
{ 
    var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0); 
    return origin.AddSeconds(timestamp).ToLocalTime(); 
} 

public static string ToISO8601(this DateTime date) 
{ 
    return date.ToString("yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz"); 
} 

希望这有助于:

public ActionResult GetAllCalendarEvents(double start, double end) 
{ 
    var startDate = start.FromUnixTimestamp(); 
    var endDate  = end.FromUnixTimestamp(); 

    // Get your events into a list here 
    IEnumerable<SomeEventClass> events = ...; 

    return Json(events.Select(evt => new 
      { 
       title   = evt.Title, 
       url    = evt.Url, 
       start   = evt.StartDate.ToISO8601(), 
       end    = evt.EndDate.ToISO8601(), 
      }), JsonRequestBehavior.AllowGet); 
} 

我用上面是如下的扩展方法。

+0

感谢提示,但是如何在日历中以js形式调用它?当我在那里点击时,它是否会要求新的开始和结束?对不起,如果这听起来很愚蠢:) – AdrianD

+0

从文档:http://fullcalendar.io/docs/event_data/events_json_feed/ GET参数名称将由startParam和endParam选项决定。 (默认情况下为“开始”和“结束”)。 这些参数的值将是ISO8601日期字符串(如2013-12-01)。有关具体行为,请参阅时区文档。 – Andreas

+0

我终于有时间来实现它,它的工作原理,没有什么你需要添加在js部分。日历将始终发送当前视图的开始和结束!,非常感谢! – AdrianD