2015-11-04 64 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