2011-07-22 2 views
0

События не отображаются в FullCalender?Full Calender не передает события?

var calendar = $('#calendar').fullCalendar({ 
    theme: true, 
    header: { 
     left: 'prev,next today', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
    }, 
    //events: '/MyCalender/JsonResponse.ashx', 
    events: [{id: '1',title: 'Event1',start: 1312462800,end: 1312462800,allDay:false,description: 'Event1'},{id: '3',title: 'Event2',start: 1309890600,end: 1309890600,allDay:true,description: 'Event2'},{id: '4',title: 'Event5',start: 1311705000,end: 1311705000,allDay:true,description: 'Event5'},{id: '5',title: 'Event3',start: 1310927400,end: 1310927400,allDay:true,description: 'Event3'},{id: '6',title: 'Event4',start: 1310495400,end: 1310495400,allDay:true,description: 'Event4'},{id: '7',title: 'Time Event1',start: 1312144200,end: 1312174800,allDay:false,description: 'Time Event1'}], 
    ..other parameter    
     ... 
}); 

Я использую следующий код (ASHx файл), чтобы вызвать данные события ..

public void ProcessRequest(HttpContext context) 
    { 
     context.Response.ContentType = "application/json"; 

     DateTime start = new DateTime(1970, 1, 1); 
     DateTime end = new DateTime(1970, 1, 1); 

     start = start.AddSeconds(double.Parse(context.Request.QueryString["start"])); 
     end = end.AddSeconds(double.Parse(context.Request.QueryString["end"])); 


     String result = String.Empty; 

     result += "["; 

     List<int> idList = new List<int>(); 
     foreach (CalendarEvent cevent in EventDAL.getEvents(start, end)) 
     { 
      result += convertCalendarEventIntoString(cevent); 
      idList.Add(cevent.id); 
     } 

     if (result.EndsWith(",")) 
     { 
      result = result.Substring(0, result.Length - 1); 
     } 

     result += "]"; 
     //store list of event ids in Session, so that it can be accessed in web methods 
     context.Session["idList"] = idList; 

     context.Response.Write(result); 
    } 

    private String convertCalendarEventIntoString(CalendarEvent cevent) 
    { 
     String allDay = "true"; 
     if (ConvertToTimestamp(cevent.start).ToString().Equals(ConvertToTimestamp(cevent.end).ToString())) 
     { 

      if (cevent.start.Hour == 0 && cevent.start.Minute == 0 && cevent.start.Second == 0) 
      { 
       allDay = "true"; 
      } 
      else 
      { 
       allDay = "false"; 
      } 
     } 
     else 
     { 
      if (cevent.start.Hour == 0 && cevent.start.Minute == 0 && cevent.start.Second == 0 
       && cevent.end.Hour == 0 && cevent.end.Minute == 0 && cevent.end.Second == 0) 
      { 
       allDay = "true"; 
      } 
      else 
      { 
       allDay = "false"; 
      } 
     } 
     return "{" + 
        "id: '" + cevent.id + "'," + 
        "title: '" + HttpContext.Current.Server.HtmlEncode(cevent.title) + "'," + 
        "start: " + ConvertToTimestamp(cevent.start).ToString() + "," + 
        "end: " + ConvertToTimestamp(cevent.end).ToString() + "," + 
        "allDay:" + allDay + "," + 
        "description: '" + HttpContext.Current.Server.HtmlEncode(cevent.description) + "'" + 
        "},"; 
    } 


    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 

    private long ConvertToTimestamp(DateTime value) 
    { 
     long epoch = (value.ToUniversalTime().Ticks - 621355968000000000)/10000000; 
     return epoch; 
    } 
+0

Есть ли ошибки на консоли Javascript? – aldrin

+0

Ошибка не найдена. Я использовал Firebug для исправления любой ошибки, но нет никакого обмана. Если я предоставил объект события непосредственно, то обработка событий работает нормально. Но всякий раз, когда я называю ashx (вы видели комментарий в javascript) для событий, ничего не происходит. –

+0

Вы пытались открыть /MyCalender/JsonResponse.ashx в браузере, получив этот ответ и вставив его непосредственно в события? Это может показаться синтаксическими ошибками. Вы также можете увидеть ответ на URL-адрес события в Firebug на вкладке Net – aldrin

ответ

0

решить используя нижеследующий код.

context.Response.ContentType = "application/json"; 

DateTime start = new DateTime(1970, 1, 1); 
DateTime end = new DateTime(1970, 1, 1); 

start = start.AddSeconds(double.Parse(context.Request.QueryString["start"])); 
end = end.AddSeconds(double.Parse(context.Request.QueryString["end"])); 

List<EventClass> listCalender = EventDAL.getEvents(start, end); 

System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer(); 
context.Response.Write(js.Serialize(listCalender)); 
0

После нескольких проб и ошибок здесь некоторые наблюдения:

двойные кавычки вокруг имени и ценность работает для меня, например. «id»: «1». Названия в вашем коде не имеют закрывающих двойных кавычек, а значения указаны в одинарных кавычках. попробуйте с двойными кавычками

Значение начальной и конечной даты должно быть в секундах. Я не знаком с .net, поэтому я не могу разобраться, возвращает ли ConvertToTimestamp секунды или миллисекунды. Также это значение также должно быть в двойных кавычках.

Можете ли вы попробовать приведенные выше предложения и посмотреть, работают ли они на вас?

+0

Давайте попробуем сначала. –

+0

Я пробовал, но не работал, как описано выше. –

+0

не работает для меня также –

Смежные вопросы